为什么在useEffect挂钩中使用useRef包装useContext与useRef时不会给出任何警告将其添加为依赖项?

时间:2020-02-16 04:51:27

标签: javascript reactjs react-redux react-hooks

当我在 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);
  }, []);

1 个答案:

答案 0 :(得分:0)

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