我正在使用功能组件。我知道异步setColor更改的值。color但是,我的回调函数没有收到color(blue) 的更新版本,即使它在color更新后执行得很好。这是我的代码的抽象版本:
let [color, setColor] = useState("red");
useEffect(() => {
setColor("blue");
setTimeout(() => {
console.log(color);
}, 5000)
}, []);
(这是一个沙箱:https ://codesandbox.io/s/falling-cherry-17ip2?file=/src/App.js )
我唯一的猜测是该setColor函数几乎创建了一个新color变量 &console.log被困在引用旧的color.
故障排除
我知道辅助
useEffect有可能在状态更改时执行我的回调。但是,这很不方便,因为我正处于复杂逻辑的中间,我只希望回调在某些条件下执行。我也知道
useRef变量会立即更新,因此这是一个替代方案。
尽管如此,问题仍然存在:为什么没有color被记录的更新值以及我可以在主节点中做些什么useEffect来访问最新版本的color状态?