如何在vue中的store.js文件中动态路由
how to route dynamically in store.js file in vue
我在 store.js (vuex) 中有一个函数,它检查一些条件,如果满足,
它应该启动到另一个组件的路由。
this.$router.push()
在 store.js 中不起作用。
vm.$router.push()
都不起作用,这里 vm = new Vue()
。
TL;DR 不需要使用vue实例来引用router,只需导入router,然后使用它的方法即可。
假设您的 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
},
},
});
我在 store.js (vuex) 中有一个函数,它检查一些条件,如果满足, 它应该启动到另一个组件的路由。
this.$router.push()
在 store.js 中不起作用。
vm.$router.push()
都不起作用,这里 vm = new Vue()
。
TL;DR 不需要使用vue实例来引用router,只需导入router,然后使用它的方法即可。
假设您的 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
},
},
});