文档定义了没有依赖项数组的 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
更新。
这是来自的复制粘贴: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
更新。