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