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
随时随地看视频慕课网APP
相关分类