为什么用useRef包装useContext时没有给出任何警告,在useEffect钩子中使用它时将其添加为依赖项?



当我在useEffect中使用useContext时,它给了我一个警告,说它必须作为依赖项添加。 但是当我把它包装在一个useRef中时,它没有给出任何警告。

之前 - 当它发出警告时。

const myContext = useContext(MyContext);
....
useEffect(() => {
//Some Logic
myContext.setSprinnerVisibility(true);
}, []);

之后 - 当它没有给出任何警告时

const myContextRef = useRef(useContext(MyContext));
....
useEffect(() => {
//Some Logic
myContextRef.current.setSprinnerVisibility(true);
}, []);

useRef使用括号中找到的任何值进行初始化。无需进行依赖项检查,因为以后的更改不会更新useRef。另一方面,useEffect对依赖项更改做出反应。任何可以更改的变量都需要记录在依赖项数组中。 对象引用不会更改myContextRef但其中的值可能会更改。

相关内容

  • 没有找到相关文章

最新更新