我在Vuejs项目上运行了Airbnb Eslint次(使用Vue cli).其中一条规则是no-param-reassign.使用Vuex(必须/必须)来控制状态:

Rules conflict

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

After changes according to rules

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

有没有更好的方法来写上面的陈述而不违反eslint规则?

Solution (thanks to 100's 101)

在规则的ignorePropertyModificationsFor处加'state'.

推荐答案

不,对不起.

由于Vue使Vuexstore 的状态变为react 状态,所以当我们改变

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

这确实意味着你需要对参数进行must次变异,以使任何变化进入你的实际状态.唯一的解决办法就是关闭这个规则.

Addendum:

我可能有更好的解决办法.请注意,这是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相关问答推荐

Nuxt.js i18n不提供默认区域设置中的页面而不重定向

正在try 访问vutify中v-select(ItemProps)的嵌套json值

如何在AXIOS调用响应中动态导入视频并创建它的绝对路径?

用于循环数组的模板元素内的条件渲染

Vuex store 在 Nuxt 的什么地方

如何在Typescript语言Vuejs中使用watch功能?

在 Vue 中,如何使用 npm run build 将 .htaccess 包含到生产环境中?

eslint – 如何知道 defined定义规则的位置

如何为 Vue 项目设置 lint-staged?

vuejs 中的单元测试

Django Rest 框架、CSRF 和 Vue.js

VueJS + Typescript:类型上不存在属性

是否可以在 vue-devtools 中命名 Vue 实例?

Vuejs模板继承

如何将项目推送到 Vuejs 中数据对象的数组中? Vue 似乎没有关注 .push() 方法

用于本地编辑的 Vuex 克隆对象

如何在 VueJS 中下载本地存储的文件

Vuex Mutation 正在运行,但组件在 vue 开发工具中手动提交之前不会更新

在Vue中调用方法时的括号

Vuejs 组件等待 facebook sdk 加载