如何在vue中的store.js文件中动态路由

时间:2017-08-02 18:12:27

标签: vue.js vuejs2 vue-router vuex

我在store.js(vuex)中有一个函数,检查一些条件,如果满足, 它应该启动到另一个组件的路由。

this.$router.push()在store.js中无效。

vm.$router.push()都没有效果,vm = new Vue()

1 个答案:

答案 0 :(得分:1)

TL; DR 您不需要使用vue实例来引用路由器,只需导入路由器然后使用其方法。

假设您的router.js看起来像这样。

import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

export default new Router({
  routes: [
    /* ... */
  ],
});

然后您可以在store.js

中导入它
import router from './router';

这样您就可以在store.js中使用它。

import Vue from 'vue';
import Vuex from 'vuex';
import router from './router';

Vue.use(Vuex);

const store = new Vuex.Store({
    state: {
        username: '',
    },
    mutations: {
      updateUsername(state, payload) {
          state.username = payload;
      }
    },
    actions: {
        updateUsername({ commit }, payload) {
            commit('updateUsername', payload);
            router.push('/');  // <--- router
        },
    },
});