假设您正在使用 React 并且您正在编写一个自定义钩子useSomething
,该钩子每次为同一组件调用时都返回相同的内容。
const something = useSomething()
// useSomething() at time X === useSomething() at time Y
如果您现在something
在 a 中使用此值,useEffect(() => ...)
并且没有将其something
作为依赖项传递给第二个参数的数组,useEffect
则 linter 将警告您:
React Hook useEffect 缺少一个依赖项:'something'。包括它或删除依赖项数组。(react-hooks/详尽的deps)
当然,ESLint 不知道它something
会始终保持相同(每个组件),但是something
在useEffect
每次使用它们时向依赖数组添加不变的东西真的很烦人。仅停用react-hooks/exhaustive-deps
似乎也不是一个好的解决方案(也不使用// eslint-disable-next-line react-hooks/exhaustive-deps
)。
有没有更好的解决方案,而不是useEffect
为了让 Linter 开心而将类似的东西不必要地添加到依赖数组中?
请在这里找到一个简单的演示:https : //codesandbox.io/s/sad-kowalevski-yfxcn [编辑:请注意,问题是关于上面描述的一般模式而不是关于这个愚蠢的小演示 - 这个的目的demo 只是为了显示 ESLint 警告,没有别的]
[编辑] 请在这里找到额外的演示:https : //codesandbox.io/s/vibrant-tree-0cyn1