出现依赖循环的代码
function sum(a, b) {
  return { sum: a + b };
}
export const Test = () => {
  const obj = sum(a, b); // 不只是对象,数组也会出现这种情况
  const [num, setNum] = useState(0);

  useEffect(() => {
    setNum(num + 1);
  }, [obj]);

  return <div>{num}</div>;
};
123456789101112131415;

现象:num 值不断快速的递增
原因:将 obj 作为依赖数组中的一员,setNum 执行一次后,会再次从头开始执行代码,但是 obj 的内存值已经发生变化,就导致 setNum 不断执行,依赖数组失效。

解决依赖循环的方法

useCallback() 相当于 useMemo() 的函数版本,它返回一个 memorized 回调函数,该回调函数只会在某个依赖项改变时才会更新。

const obj = useCallback(() => sum(a, b), [a, b]);
1;

使用 useState 也可以

const [obj, setObj] = useState({});
1;