export default function App() {
let [color, setColor] = useState("red");
useEffect(() => {
setColor("blue");
setTimeout(() => {
console.log(color);
setColor("purple");
}, 1000);
}, []);
function revealColor() {
console.log(color);
}
return <button onClick={revealColor}>Click after 1 second to reveal color</button>
}
根据上一个问题,我知道setTimeout
回调引用了第一个color
变量(红色)。不知何故,它setColor
设法更改了最新的color
变量(通过单击记录“紫色”的按钮即可证明)。怎么会这样呢?我想setColor
同样会引用旧setColor
变量。
setColor("blue");
PS“旧”,我指的是重新执行返回新变量/函数的整个组件的事实color
。
守候你守候我
慕哥6287543
相关分类