Vue.js 有没有一种方法可以将promise用于此结构Vuex
我有一个在表单提交组件上激发的操作Vue.js 有没有一种方法可以将promise用于此结构Vuex,vue.js,vuex,Vue.js,Vuex,我有一个在表单提交组件上激发的操作 this.$store.dispatch('registerAction', this.registerData); 在这个组件中,我还想显示“注册成功”这样的消息。 为此,我想在我的this.$store.stateregisterSuccess中侦听属性,该属性默认为false 注册表操作(Vuex) registerSuccess变异集state.registerSuccess=true(失败将其设置为false) 问题: 在这种情况下,如何侦听对状态
this.$store.dispatch('registerAction', this.registerData);
在这个组件中,我还想显示“注册成功”这样的消息。
为此,我想在我的this.$store.state
registerSuccess
中侦听属性,该属性默认为false
注册表操作(Vuex)
registerSuccess
变异集state.registerSuccess=true代码>(失败将其设置为false)
问题:
在这种情况下,如何侦听对状态的更改。registerSuccess
?如果我把它放在计算机中,它返回false。虽然它在Vuex存储中确实更改为true
computed: {
registerSuccess() {
console.log(this.$store.state.registerSuccess)
return this.$store.state.registerSuccess;
}
},
您已经提到,registerSuccess
是一个mutation
,这也意味着您已将其放入存储对象中的mutation
属性中,如下所示:
{
state: {
registerSuccess: false
},
mutations: {
registerSuccess(state) {
state.registerSuccess = true;
}
}
}
在这种情况下,您需要使用来执行registerSuccess
mutation
您的代码应该是:
return this.api.registerUser()
.then(response => {
if(response.success) {
return store.commit('registerSuccess');
}
return store.commit('registerFail');
});
检查此项以供参考这可能与答案无关,但为什么返回调度而不直接调用它?@JeremyWalters,有几个很好的理由可以使用存储操作,而不是直接在组件内硬编码API调用和回调:a)它使代码更可重用,比如说,如果你想从另一个组件注册一个用户,或者b)调试或维护更容易:如果出现问题或需要重构,你只需要更新存储操作。我通常从操作中调用我的变体。因此动作registerSuccess
看起来像这样,例如context.commit('REGISTER\u SUCCESS',payload)代码>并在变异中注册成功
更改我的状态
。对不起,如果我的问题有点混乱。
return this.api.registerUser()
.then(response => {
if(response.success) {
return store.commit('registerSuccess');
}
return store.commit('registerFail');
});