我在store.js(vuex)中有一个函数,检查一些条件,如果满足, 它应该启动到另一个组件的路由。
this.$router.push()
在store.js中无效。
vm.$router.push()
都没有效果,vm = new Vue()
。
答案 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
},
},
});