箭头函数参数周围的预期括号。(箭头括号)

ali*_*ali 5 javascript reactjs eslint

如何避免ES7箭头函数上的流型错误

handleSelectCategory = (e) => {
  const { form } = this.state;

  let newCategories = [];
  if (form.categories.findIndex((c) => c.value === e.value) >= 0) {
    newCategories = form.categories.filter((c) => c.value !== e.value);
  } else {
    newCategories = [...form.categories, e];
  }
  this.setState({
    form: Object.assign({}, form, { categories: newCategories }),
  });
};
Run Code Online (Sandbox Code Playgroud)

我收到警告

Expected parentheses around arrow function argument. (arrow-parens)
Run Code Online (Sandbox Code Playgroud)

Bar*_*mar 8

当只有一个参数时,箭头函数的参数周围的括号在 ES6 中是可选的,但默认情况下 ESLint 会抱怨这一点。这是由箭头括号选项控制的。

更改此选项,或更改您的箭头函数以使用(c)而不是c用作参数列表。

  • 'arrow-parens' 看起来不是 eslint 的 ["recommended"](https://eslint.org/docs/rules/) 列表的一部分。但它是流行的airbnb扩展的一部分。 (4认同)
  • `"always"` 是默认选项 _if_ 您将规则包含在 eslint 配置的“规则”列表中(没有专门的选项。)但默认情况下,ESLint 根本不包含该规则。(从技术上讲,ESLint 默认不包含 _any_ 规则,但运行 `eslint --init` [将添加](https://eslint.org/docs/user-guide/getting-started#configuration) `"extends" : "eslint:recommended"`,它添加了 eslint 的所有“推荐”规则 - 但它也不在该列表中。) (2认同)
  • 但实际上我错了,看起来[airbnb使用“按需”选项](https://github.com/airbnb/javascript#arrows--one-arg-parens),所以我不确定海报甚至添加了此规则。他们必须扩展包含它的其他人的库,或者自己添加并忘记了它。 (2认同)