当 deps 为 [] 时,React 警告 React Hook useEffect 缺少依赖项

时间:2021-02-02 17:53:30

标签: reactjs react-hooks

我正在尝试清除 DOM 中的警告,对于每个 useEffect 的 deps 是 [],我收到一条错误消息,指出 useEffect 缺少依赖项。我想在组件安装时触发效果,我的印象是这就是这样做的方式。如果是这样,为什么会出现警告?

这是我使用的简单代码

useEffect(() => {
   setDispContext("NEW");
}, []);

警告为 React warning React Hook useEffect has a missing dependency: 'setDispContext'. Either include it or remove the dependency array react-hooks/exhaustive-deps

2 个答案:

答案 0 :(得分:1)

你在 unside useEffect 中使用的所有东西都必须在依赖数组中,所以正确的方法是:

useEffect(() => {
   setDispContext("NEW");
}, [setDispContext]);

但有时你只需要 useEffect 运行一次。如果 setDispContext 不会改变,它可以放在 useCallback 中。否则唯一的办法就是使用:

useEffect(() => {
   setDispContext("NEW");
}, []);// eslint-disable-line

所以 eslint 警告不会显示。

答案 1 :(得分:0)

试试:

useEffect(() => {
   setDispContext("NEW");
// eslint-disable-line
}, []);