gpt4 book ai didi

reactjs - 为什么 eslint-plugin-react-hooks 在有条件地使用 React hooks 时不会发出警告?

转载 作者:行者123 更新时间:2023-12-03 13:22:35 28 4
gpt4 key购买 nike

我正在使用react 16.8和eslint-plugin-react-hooks 1.6.0。当我有条件地使用hooks时,我希望eslint能够警告我。这是我的配置:

"eslintConfig": {
"parser": "babel-eslint",
"plugins": [
"react-hooks"
],
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
}

如果我在自定义 Hook 中有条件地使用 Hook ,则会出现如下警告:“有条件地调用 React Hook\"useState\"。React Hooks 必须在每个组件渲染中以完全相同的顺序调用。”

function useCustomHook() {
if (Math.random() > 0.5){
const [a, setA] = useState(0)
}
}

但是如果我在函数组件中使用钩子(Hook),它就不起作用。

function MyComponent() {
if (Math.random() > 0.5){
const [a, setA] = useState(0)
}
return null
}

最佳答案

这对我有用:

  1. 首先安装适当的 eslint 插件:
   $ npm i --save-dev eslint-plugin-react-hooks
  • 将其与默认配置一起添加到您的 .eslintrc 中:
  •   {
    "plugins": [
    ...
    "react-hooks"
    ],
    "rules": {
    ...
    "react-hooks/rules-of-hooks": "error",
    "react-hooks/exhaustive-deps": "warn"
    }
    ...
  • 安装 eslint 配置模板“react-app”:
  •   $ npm i --save-dev eslint-config-react-app
  • 在 .eslintrc 中从新安装的配置扩展:
  •   {
    ...
    "extends": "react-app"
  • 确保您具有新软件包的正确对等依赖项,例如我必须这样做:
  •   $ npm i --save-dev eslint-plugin-flowtype
  • 确保您的 eslint 软件包版本为 5+,例如5.16.0 可以工作,更高版本也应该可以工作(但要注意,更高版本的 eslint 也需要更新的 Nodejs)。
  •   $ npm i --save-dev eslint@^5.0.0
  • 重新启动 VSCode
  • 按 Cmd-Shift-U 打开输出终端,在下拉菜单中切换到 Eslint 并检查其加载是否没有错误。
  • 关于reactjs - 为什么 eslint-plugin-react-hooks 在有条件地使用 React hooks 时不会发出警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55892009/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com