我正在看这个yt视频,它解释了useRef是如何工作的,视频的结尾有一段代码让我感到困惑(https://www.youtube.com/watch?v=t2ypzz6gJm0)
它基本上是用一个useRef
来告诉你previously在文本框中输入了什么,以及当前在文本框中输入了什么,但我不明白它为什么会起作用:
import React, { useState, useEffect, useRef } from "react";
export default function App() {
const [name, setName] = useState("");
const prevName = useRef("");
useEffect(() => {
prevName.current = name;
}, [name]);
return (
<>
<input value={name} onChange={(event) => setName(event.target.value)} />
<div>
{" "}
my name is {name} and it used to be {prevName.current}
</div>
</>
);
}
因此,我对useEffect
的工作原理的理解是,它只会应用useEffect
函数104来重新呈现组件.因此,根据这个逻辑,当调用useEffect
函数时,name
的值已经更改为它的最新值(即,当前输入文本框中的内容).
那么,为什么这种逻辑是错误的呢?