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



这是一个复制粘贴自: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]的原因。

在本例中,"每次渲染"基本上意味着只要value变量发生变化,因为只有一个useState挂钩。因此,在这种情况下,将value添加到deps数组不会有什么不同。省略它也没有什么区别,因为它从来没有用相同的值运行(只有在父函数中更改为count之后(。

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

最新更新