![](/img/trans.png)
[英]React Hook useEffect has a missing dependency Either include it or remove the dependency array react-hooks/exhaustive-deps
[英]React Hook useEffect has a missing dependency: 'loading'. Either include it or remove the dependency array react-hooks/exhaustive-deps
我该如何解决这个警告?
React Hook useEffect 缺少依赖项:'loading'。 要么包含它,要么删除依赖数组 react-hooks/exhaustive-deps。
useEffect(() => {
if (!loading && data) {
dispatch(action.TODO(data));
}
}, [data, dispatch]);
通过在第二个参数数组中指定它,您可以将依赖项添加到useEffect
挂钩。
像这样。
useEffect(() => {
if (!loading && data) {
dispatch(action.TODO(data));
}
}, [data, dispatch, loading]);
简短的回答是:在useEffect
的第二个参数的数组中删除dispatch
并添加loading
正确答案是:当useEffect
在其执行内部使用一个变量作为条件时,它认为它是一个依赖,并表明它在被修改时应该再次执行,否则必须从依赖数组中消除
您正在使用useEffect
并且您将要经常引用组件中声明为 props 或 state 的一些变量。 您已经在使用data
这样做了。 这是您在useEffect
function 中引用的 state 的一部分。
loading
是一个 prop 或 state 的一部分,当您引用一个 prop 或 state 的一部分时,ESLint 中专门写入了一条规则,希望您在useEffect
依赖项数组中引用 state 的任何一个 prop 或一部分。 这控制了useEffect
被执行,并且该规则希望在依赖项数组中看到您正在引用的 state 的道具或片段。
useEffect(() => {
if (!loading && data) {
dispatch(action.TODO(data));
}
}, [data, dispatch, loading]);
为什么该规则要我们将loading
放在那里? 在某些情况下,使用useEffect
而不是在依赖项中引用 state 的道具或片段可能会导致一些奇怪且难以调试的问题。
因此,该警告旨在帮助您在使用useEffect
时避免难以理解的问题。
虽然该规则是出于好意,但任意向依赖项数组添加如此多的规则可能会导致其他错误,这只是需要注意的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.