我正在使用 react 16.8 和 eslint-plugin-react-hooks 1.6.0 。当我有条件地使用钩子时,我希望 eslint 会警告我。这是我的配置:
"eslintConfig": {
"parser": "babel-eslint",
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}
如果我在自定义钩子中有条件地使用钩子,会出现这样的警告:“React Hook \”useState\” 有条件地调用。在每个组件渲染中,必须以完全相同的顺序调用 React Hooks。”
function useCustomHook() {
if (Math.random() > 0.5){
const [a, setA] = useState(0)
}
}
但是如果我在函数组件中使用钩子,它就不起作用。
function MyComponent() {
if (Math.random() > 0.5){
const [a, setA] = useState(0)
}
return null
}