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

Linter complains about empty dependency array in React Native hooks

在 React Native 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
}, []);

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

通常 linter 建议的(添加依赖项)是最好的解决方案,因为当效果中使用的某些变量发生变化时,通常您会想要重新 运行 效果。参见 https://typeofnan.dev/you-probably-shouldnt-ignore-react-hooks-exhaustive-deps-warnings/ for more info. Also it has been discussed here: https://github.com/facebook/react/issues/14920