当我在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
但其中的值可能会更改。