Vuejs2 Vue.js与路由器
我需要在自定义方法中使用router对象,但我一直得到一个未定义的错误 我已经在我的App.vueVuejs2 Vue.js与路由器,vuejs2,vue-router,Vuejs2,Vue Router,我需要在自定义方法中使用router对象,但我一直得到一个未定义的错误 我已经在我的App.vue中注册了路由器。从./router'导入路由器,路由器在路由时工作 现在,我已经创建了一个auth.js文件来管理jwt令牌中的用户状态 /* global localStorage */ import User from '@/models/User' import * as MutationTypes from './mutation_types' import router from '
中注册了路由器。从./router'
导入路由器,路由器在路由时工作
现在,我已经创建了一个auth.js文件来管理jwt令牌中的用户状态
/* global localStorage */
import User from '@/models/User'
import * as MutationTypes from './mutation_types'
import router from '@/router'
const state = {
user: User.from(localStorage.token),
layout: 'home-layout'
}
const getters = {
currentUser (state) {
return state.user
},
layout (state) {
return state.layout
}
}
const mutations = {
[MutationTypes.LOGIN] (state) {
state.user = User.from(localStorage.token)
console.log(state.user)
if(!state.user.role){
state.layout = 'home-layout'
} else if (state.user.role==='USER'){
console.log('sono utente')
state.layout = 'home-layout'
} else if (state.user.role==='ADMIN'){
console.log('sono admin')
state.layout = 'admin-layout'
router.replace(route.query.redirect || "/admin");
}
},
[MutationTypes.LOGOUT] (state) {
state.user = null
state.layout = 'home-layout'
},
SET_LAYOUT (state, payload) {
state.layout = payload
}
}
const actions = {
login ({ commit }) {
commit(MutationTypes.LOGIN)
},
logout ({ commit }) {
commit(MutationTypes.LOGOUT)
}
}
export default {
state,
actions,
mutations,
getters,
router
}
这是router/index.js文件
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/views/Home'
import Contacts from '@/views/Contacts'
import About from '@/views/About'
import Dashboard from '@/views/admin/Dashboard'
import ObjectList from '@/components/ObjectList'
import Register from '@/views/Register'
Vue.use(Router)
export default new Router({
linkExactActiveClass: 'active', // active class for *exact* links.
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/contacts',
name: 'contacts',
component: Contacts
},
{
path: '/about',
name: 'about',
component: About
},
{
path: '/register',
name: 'register',
component: Register
},
{
path: '/admin',
name: 'dashboard',
component: Dashboard
},
...
]
})
因此,当我需要检查当前用户状态时,我调用登录操作,但我一直得到this.$router
未定义,但应该全局声明
正确的方法是什么?我认为这不是你想象的那样
import router from './router' //add correct path
const mutations = {
[MutationTypes.LOGIN] (state) {
state.user = User.from(localStorage.token)
if(!state.user.role){
state.layout = 'home-layout'
} else if (state.user.role==='USER'){
state.layout = 'home-layout'
} else if (state.user.role==='ADMIN'){
state.layout = 'admin-layout'
- this.$router.replace(this.$route.query.redirect || "/admin"); //delete
+ router.replace(router.currentRoute.query.redirect || "/admin"); // add
}
},
[MutationTypes.LOGOUT] (state) {
state.user = null
state.layout = 'home-layout'
},
SET_LAYOUT (state, payload) {
state.layout = payload
}
}
我认为这不是你想象的那样
import router from './router' //add correct path
const mutations = {
[MutationTypes.LOGIN] (state) {
state.user = User.from(localStorage.token)
if(!state.user.role){
state.layout = 'home-layout'
} else if (state.user.role==='USER'){
state.layout = 'home-layout'
} else if (state.user.role==='ADMIN'){
state.layout = 'admin-layout'
- this.$router.replace(this.$route.query.redirect || "/admin"); //delete
+ router.replace(router.currentRoute.query.redirect || "/admin"); // add
}
},
[MutationTypes.LOGOUT] (state) {
state.user = null
state.layout = 'home-layout'
},
SET_LAYOUT (state, payload) {
state.layout = payload
}
}
显示导入部件和路由器文件。基本上所有涉及的代码。谢谢,添加了整个代码。我希望它在没有路由器而不是路由器的情况下工作。但如果导出常量而不是默认的导出常量路由器=新路由器,则会发生wat。。。导入:import{router}from'@/router'显示导入部分和路由器文件。基本上所有涉及的代码。谢谢,添加了整个代码。我希望它在没有路由器而不是路由器的情况下工作。但如果导出常量而不是默认的导出常量路由器=新路由器,则会发生wat。。。导入:从“@/router”导入{router}如果我这样做,我会丢失$route函数try
router.currentRoute
如果我这样做,我会丢失$route函数tryrouter.currentRoute