Vuex动作处理程序上下文对象和有效负载ESLint规则问题

时间:2020-05-30 12:48:09

标签: vue.js vuex eslint

我对vuex动作处理程序和ESLint规则有疑问

如果未使用变量且对象为空,则此操作代码会将ESLint标记为错误

actions:{
  handler:({commit, state}, payload) =>{}
}

提交和状态将作为未使用的变量抛出错误

actions:{
  handler:({}, payload) =>{}
}

此{}将抛出空对象

actions:{
  handler:(payload) =>{}
}

有效负载将返回上下文对象

这是我的eslint配置

"eslintConfig": {
    "root": true,
    "env": {
        "node": true
    },
    "extends": [
        "plugin:vue/essential",
        "eslint:recommended",
        "@vue/prettier"
    ],
    "parserOptions": {
        "parser": "babel-eslint"
    },
    "rules": {
        "no-unused-vars": "warn",
        "no-extra-boolean-cast": "warn"
    }

我通过使用规则“ no-unused-vars”:“ warn”,“ no-extra-boolean-cast”:“ warn”避免了ESLint错误

这是要抓住的地方

  1. 我不想绕过ESLint。当然,它将引发错误。 有时候,我不需要使用上下文,只需使用有效负载变量即可。
  2. 有人可以向我解释动作处理程序的参数行为 以及如何使其遵循ESLint规则“ eslint:recommended”

2 个答案:

答案 0 :(得分:1)

我也遇到了这个问题,这个链接可能会有所帮助。 https://forum.kirupa.com/t/js-tip-of-the-day-the-underscore-convention/643076

我最终这样做是为了阻止 linter 抱怨:

actions:{
  handler:(_context, payload) => {
    // do something
  }
}

答案 1 :(得分:0)

我也遇到了这个问题。我通过用简单的下划线({ commit, state }代替_来解决此问题,就像这样:

actions:{
  handler:(_, payload) => {
    // do something
  }
}

据我所知,这是人类使用的“元惯例”,即当开发人员想要向其他开发人员发出“此参数未使用”的信号时(例如,在Kotlin中经常使用)。看到我的短毛猫跳过了这种表示法的警告,并且我的单元测试也通过了,我感到非常惊讶。

话虽这么说,我认为我们需要对此进行更多讨论,这是为什么它是语言的双重特征,还是仅仅是运气,或者更糟的是:我项目中讨厌的皮棉变种。