繁体   English   中英

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

[英]Linter complains about empty dependency array in React Native hooks

在 React Native 的useEffect中,使用空的依赖数组是可以接受的(这通常是出于正当理由故意这样做的)。

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

然而 Linter 一直在抱怨并建议要么添加某些参数作为依赖数组的元素,要么将其删除。 删除依赖数组不是我的选择。 我是否应该接受 Linter 建议并将一长串项目添加到依赖项数组中? 还是有一种简单的方法可以更改 Linter 设置?

AFAIK 没有配置react-hooks/exhaustive-deps linting 规则,但您可以忽略特定行的 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
}, []);

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

通常 linter 建议(添加依赖项)是最好的解决方案,因为通常当效果中使用的一些变量发生变化时,您会想要重新运行效果。 有关更多信息,请参阅https://typeofnan.dev/you-probably-shouldnt-ignore-react-hooks-exhaustive-deps-warnings/ 也在这里讨论过: https://github.com/facebook/react/issues/14920

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM