我无法从组件中更改商店模块

时间:2019-07-19 08:34:39

标签: vue.js vuex

我有一个名为“ moduleA”的模块,其状态包含“ errorMessage”和一个名为“ storeErrorMessage”的变量。该错误消息正确呈现在我的组件中,但问题是我无法在离开路由之前清除它。我在moduleA中有一个变异方法,称为“ clearErrorMessage”,该方法应该将moduleA errorMessage状态设置为null,但这种方式无法正常工作。

请参阅下面的一些代码:

FormArray

我不知道我在做什么错,因为未清除错误和“确定”消息。有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

现在,您不是在调用/调用突变,而只是返回它们的值,即this.clearErrorMessage;。您应该使用(),即this.clearErrorMessage();来调用函数。

此外,您不能使用ES6箭头功能,因为这会将词法绑定到您的beforeRouteLeave方法,而该方法不是From the docs

  

请勿在options属性或回调函数上使用箭头功能,例如created: () => console.log(this.a)vm.$watch('a', newValue => this.myMethod())。由于箭头函数没有this,因此this将被视为任何其他变量,并按词法在父级作用域中进行查找,直到找到

以下代码应该起作用:

beforeRouteLeave: function (to, from, next) => {
    this.clearErrorMessage();
    this.clearOkMessage();
    next();
}

答案 1 :(得分:0)

现在,我已经使用ES5标准功能而不是ES6箭头功能解决了它,如下所示:

beforeRouteLeave: function (to, from, next){
    console.log(this)
    this.clearErrorMessage();
    this.clearOkMessage();
    next();
  }