关于在vuex 的mutations 里面访问不到router的实例?

当在mutations 里面去添加路由的时候,报错了。
刚接触vuex 不是很清楚这里的关系,希望各位大佬能够解答一二。什么情况下会出现这种问题,给予一个思路也是可以的。
图片描述

mutations :{
    // 动态添加主界面路由,需要缓存
    updateAppRouter: (state, routes) => {
      state.routers.push(...routes)
      router.addRoutes(routes)
    },

    // 动态添加全局路由,不需要缓存
    updateDefaultRouter (state, routes) {
      router.addRoutes(routes)
    },
}
阅读 4.3k
3 个回答

vuex的mutation中是看不到router对象的。。。
mutation最好只用来更新state的属性,不用做其他。
如果要引用路由对象应该在Vue对象中使用。

不能把这句放到外面去执行吗router.addRoutes(routes)
那可以试试吧router对象传进去

this.$store.commit('router', {path: '/', router :this.$router});

router(state, {path, router}) {
    router.push(path);
  }

state中没有定义router,所以会报错
想要实现你的这个需求,可以直接将router import进去
然后在mutation中直接router.push()就可以了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题