如何获取“ eslint-plugin-react-hooks”以导入作为“ default”导出的功能组件?

时间:2019-06-14 21:55:25

标签: reactjs eslint react-hooks typescript-eslint

我故意创建了一个简单的功能组件,该组件打破了钩子规则。它包含以下代码段。

  if (Math.rand > 0.5) {
    const [name, setName] = useState("fred");
  }

我希望eslint-plugin-react-hooks可以消除这个明显的错误,但事实并非如此。尝试深入了解这一点之后,我发现当我将函数导出为默认值时,lint不会执行此操作。 (我用@typescript-eslint/parser来表示什么)。

是否可以通过eslint / eslint-plugin-react-hooks使用后一种语法,还是必须始终创建一个命名的功能组件,然后在该功能下运行export default name;

https://codesandbox.io/s/hook-demo-c10y2

2 个答案:

答案 0 :(得分:0)

所以...我刚刚发现这是eslint-plugin-react-hooks的已知错误。似乎您需要为插件提供一个命名函数,以捕获并检查错误。 https://github.com/facebook/react/issues/14404(特别是"react-hooks/rules-of-hooks"规则)。

答案 1 :(得分:-1)

您的代码违反了钩子规则,在钩子规则中只能在代码的顶层调用钩子。不能将其放在if ... else语句中。在此处查看钩子规则:https://reactjs.org/docs/hooks-rules.html