this.$navigateTo
在我的组件的方法中可以很好地工作,但是在Vue.$navigateTo
和this.$navigateTo
的突变中都无法工作。我的导航取决于我从api调用获得的结果,如果无法在存储操作内执行导航,那么如何从存储操作中获取一些返回值,以便可以在组件内执行导航?>
答案 0 :(得分:1)
您可以从存储操作中返回一个值。由于动作是异步的,因此您需要处理产生的承诺,做类似
的操作store.dispatch('actionA').then((target) => {
// navigate to target
})
此处解释了该概念: https://vuex.vuejs.org/guide/actions.html#composing-actions
答案 1 :(得分:0)
这是我的解决方法:
new Vue({
store,
render: h => h('frame', [h(store.state.is_logged_in ? App : Login)]),
created() {
this.$store.commit('setNav', t => this.$navigateTo(t));
if (this.$store.state.is_logged_in) {
this.$store.dispatch('init');
}
},
}).$start();
现在我要做的事情:
logout({commit, state}) {
console.log('logged out');
commit('log_out');
state.nav(Login);
},