我对使用useRef存储上一个状态值感到困惑。实际上,它如何能够正确显示先前的值?由于useEffect依赖于"value",我的理解是每次"value"更改时(即当用户更新文本框时),它会将“prevValue.current”更新为新键入的值。
但这不是正在发生的事情。在这种情况下,步骤的顺序是什么?
function App() {
const [value, setValue] = useState("");
const prevValue = useRef('')
useEffect(() => {
prevValue.current = value;
}, [value]);
return (
<div>
<input
value={value}
onChange={e => setValue(e.target.value)}
/>
<div>
Curr Value: {value}
</div>
<div>
Prev Value: {prevValue.current}
</div>
</div>
);
}
useEffect
的基本意思是:“在每次重新渲染后,在 DOM 更新完成并且所有操作都完成之后,如果我的任何依赖项已更改,则运行此代码”。 - Jayce444componentDidUnmount
。具体来说,我认为它是在从 DOM 中移除并在组件对象被 JS 引擎标记为垃圾回收之前。 - Jayce444