Linter 抱怨 React Native 挂钩中的依赖数组为空

Yog*_*sch 4 javascript react-native linter react-hooks

在 React Native 中,useEffect使用空依赖数组是可以接受的(这通常是出于合法原因故意这样做的)。

在useEffect中,不提供依赖数组和提供空依赖数组有什么区别?

然而,Linter 不断抱怨并建议要么添加某些参数作为依赖项数组的元素,要么将其删除。删除依赖数组对我来说不是一个选择。我应该接受 Linter 建议并向依赖项数组添加一长串项目吗?或者有没有一种简单的方法可以更改 Linter 设置?

Dre*_*ese 6

AFAIK 没有配置react-hooks/exhaustive-depslinting 规则,但您可以忽略特定行的 eslint 规则。

如果您确实希望效果仅在组件安装时运行一次,那么使用空依赖项数组是正确的。您可以禁用该行的 eslint 规则以忽略它。

useEffect(() => {
  ... business logic ...

  // NOTE: Run effect once on component mount, please
  // recheck dependencies if effect is updated.
  // eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
Run Code Online (Sandbox Code Playgroud)

注意:如果您稍后更新效果并且它需要在其他依赖项之后运行,那么此禁用的注释可能会掩盖未来的错误,因此我建议留下一个相当公开的注释,以说明覆盖已建立的 linting 规则的原因。