vue.js - Vuex Mutations 和 Airbnb eslint

标签 vue.js vuex

我不唱歌Airbnb Eslint在我的 Vuejs 项目上(使用 Vue-cli)。其中一条规则是 no-param-reassign .为了控制状态(使用 Vuex),必须使用突变/ Action :

规则冲突

mutations: {
    increase: (state) => {
        state.counter++;
    }
}

按规则修改后

mutations: {
    increase: (state) => {
        const thisState = state;
        thisState.coutner++;
    }
}

有没有更好的方法来编写上面的语句并且不违反 eslint 规则?

解决方案 (感谢 Cobaltwayanswer )

'state' 添加到规则的 ignorePropertyModificationsFor 中。

最佳答案

不,对不起。

Since a Vuex store's state is made reactive by Vue, when we mutate the state, Vue components observing the state will update automatically. This also means Vuex mutations are subject to the same reactivity caveats when working with plain Vue [...]

来源:https://vuex.vuejs.org/en/mutations.html

这确实意味着您必须改变参数以使任何更改进入您的实际状态。唯一的解决办法是关闭该规则。

附录:

我可能有更好的解决方案。请注意,这是由 their ESLint 强制执行的实际规则。 :

'no-param-reassign': ['error', {
  props: true,
  ignorePropertyModificationsFor: [
    'acc', // for reduce accumulators
    'e', // for e.returnvalue
    'ctx', // for Koa routing
    'req', // for Express requests
    'request', // for Express requests
    'res', // for Express responses
    'response', // for Express responses
    '$scope', // for Angular 1 scopes
  ]
}],

您可以将 'state' 添加到 ignorePropertyModificationsFor 数组,这样您在修改状态属性时就不会遇到错误。

关于vue.js - Vuex Mutations 和 Airbnb eslint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44657142/

相关文章:

javascript - 如何将多个参数传递给 vuex getter?

javascript - 在Vue js中访问父级子事件的数据

javascript - 在 Vuejs 中渲染输入字段

vue.js - 计算观察者方法调用时,vue jest spyOn 不起作用

Django Rest 框架、CSRF 和 Vue.js

vue.js - Vue2 + Vuex - 不渲染在存储中成功设置的数组

javascript - Vuex:从行动中调用 setter/getter

javascript - vue中的路由器未定义

json - Vue/Vuex - 从 JSON 文件加载状态

javascript - 在 API 错误时打破 Vuex 操作中的 promise