Vuejs2 Vue.js与路由器

Vuejs2 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对象,但我一直得到一个未定义的错误

我已经在我的App.vue
中注册了路由器。从./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函数try
router.currentRoute