如何在vuex的actions.js中使用router?
How to use router in actions.js of vuex?
这是来自 main.js 我配置路由器的代码
enter code here
const router = new Router({
routes,
mode: 'history',
saveScrollPosition: true
});
sync(store, router);
const app = new Vue({
router,
store,
render: h => h(App )
}).$mount('#app');
然后在 vuex/actions.js 中我已经操作 registerUser 我请求 API 如果响应成功我想将用户重定向到主页
enter code here
export const registerUser = ({commit, state}, userData) => {
commit(types.REQUEST_USER_REGISTER);
api.register(userData).then(success => {
const response = success.data;
localStorage.setItem('id_token', response.token);
commit(types.USER_OBJECT, response.user)
//TODO: find better solution, then put router instance into window var
window.router.replace('/');
}, failure => {
})
}
上面的代码运行良好,因为我在 build.js 中将路由器实例设置为 window var,也许有人知道更好的解决方案而不是它
将路由器声明移动到单独的文件中并导出。然后导入主文件和您希望使用它的任何其他文件。 api 与 vue 原型上的 $router
属性 相同。
这是来自 main.js 我配置路由器的代码
enter code here
const router = new Router({
routes,
mode: 'history',
saveScrollPosition: true
});
sync(store, router);
const app = new Vue({
router,
store,
render: h => h(App )
}).$mount('#app');
然后在 vuex/actions.js 中我已经操作 registerUser 我请求 API 如果响应成功我想将用户重定向到主页
enter code here
export const registerUser = ({commit, state}, userData) => {
commit(types.REQUEST_USER_REGISTER);
api.register(userData).then(success => {
const response = success.data;
localStorage.setItem('id_token', response.token);
commit(types.USER_OBJECT, response.user)
//TODO: find better solution, then put router instance into window var
window.router.replace('/');
}, failure => {
})
}
上面的代码运行良好,因为我在 build.js 中将路由器实例设置为 window var,也许有人知道更好的解决方案而不是它
将路由器声明移动到单独的文件中并导出。然后导入主文件和您希望使用它的任何其他文件。 api 与 vue 原型上的 $router
属性 相同。