文档定义了没有依赖项数组的 usePrevious,为什么?

Documentation defines usePrevious without a dependency array, why?

这是来自的复制粘贴:Hooks FAQ usePrevious

function usePrevious(value) {
  const ref = useRef();
  useEffect(() => {
    ref.current = value;
  });  // no dependency arg, why?
  return ref.current;
}

由于 useEffect 是在没有依赖数组的情况下调用的,因此每次渲染都会调用其函数参数。通过将 value 添加到 useEffect 依赖项数组来将其限制为仅在 value 更改时是否安全,如下所示:

  useEffect(() => {
    ref.current = value;
  }, [value]);

我想知道是否存在 ref.current 必须更新每次渲染的情况,这可以解释文档中遗漏了 [value]

在这个例子中,"every render" 基本上意味着只要 value 变量发生变化,因为只有一个 useState 钩子。因此,在这种情况下,将 value 添加到 deps 数组不会有任何区别。省略它也没有什么区别,因为它永远不会 运行 具有相同的值(仅在父函数中更改为 count 之后)。

如果有另一个 useState 某处导致另一个重新渲染,那么是的,将 value 添加到 deps 数组将减少 ref.current 更新。