Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js 有没有一种方法可以将promise用于此结构Vuex_Vue.js_Vuex - Fatal编程技术网

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');
            });