代码之家  ›  专栏  ›  技术社区  ›  Taylor Austin

如何全局禁用react hooks/deps eslint警告?

  •  0
  • Taylor Austin  · 技术社区  · 6 年前

    useEffect 作为一个 componentDidMount() .

    我试过:

    {
      "plugins": [
        // ...
        "react-hooks"
      ],
      "rules": {
        // ...
        "react-hooks/rules-of-hooks": "off"/0, // tried each
        "react-hooks/exhaustive-deps": "off"/0 // tried each
      },
      "overrides": [
            {
                "files": ["**/*.js"],
                "rules": {
                    "react-hooks/rules-of-hooks": "off"/0, // tried each
                    "react-hooks/exhaustive-deps": "off"/0 // tried each
                }
            }
        ]   
    }
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   David Buck Richard Ferris    5 年前

    我使用useEffect和 componentDidMount() . 在项目根目录中添加文件.eslintrc.json时,可以忽略该警告

    里面有这样的东西(这对我很有用):

    {
    "overrides": [
        {
            "files": ["**/*.js"],
            "rules": {
                "react-hooks/exhaustive-deps": "off"
            }
        }
    ]
    }
    
        2
  •  1
  •   jtiscione    5 年前

    我们一直在寻找一种在整个项目中禁用此规则的方法,因为试图修复此规则的人不断引入无限循环错误,这些错误通常擅长隐藏,直到正确的变量组合出现。

    该规则基本上做出了一个激进的假设,即传递给useffect()的函数中根本没有任何设计或思想。如果存在一个If/else块,该块在一个依赖项不存在时计算另一个依赖项,并正确处理其作业,那么盲目地将两个变量添加到依赖项数组很可能触发无限循环。

    我们总是可以告诉每个人在整个项目中添加eslint ignore行,但这是我们在关闭时遇到问题的唯一规则(这个特定的项目在package.json中有ESLint配置,因为它使用react脚本,我们试图通过将其设置为“off”在“rules”块中将其关闭。我不知道这是否也是.eslintrc文件的问题。)

        3
  •  0
  •   Bilal Nasir    5 年前

    如果useEffect位于jsx文件中,则必须使用文件扩展名jsx,因此覆盖将如下所示

    {
    "overrides": [
        {
            "files": ["**/*.jsx"],
            "rules": {
                "react-hooks/exhaustive-deps": "off"
            }
        }
    ]
    }