我故意创建了一个简单的功能组件,该组件打破了钩子规则。它包含以下代码段。
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;
?
答案 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