const tempFahrenheit = atom({
key: 'tempFahrenheit',
default: 32
});
const [tempF, setTempF] = useRecoilState(tempFahrenheit);
const handleClick = (temp: number) => {
flushSync(() => {
setTempF(temp);
});
flushSync(() => {
console.log(tempF);
});
};
当 onClick 处理程序被调用时,上面显示 32。 因此,如果我们有一个使用“tempFahrenheit”原子的反冲选择器并尝试在 onClick 处理程序中使用它,它会采用旧值 32。
尝试选择退出带有刷新同步的 React 18 批处理,但仍然无法获取最新值。
据我所知,Recoil 并未设置为能够利用flushSync,请参阅:
https://github.com/facebookexperimental/Recoil/issues/1076
我能够设置反冲状态,然后通过使用
useRecoilCallback
立即使用新状态并在那里获取新状态的快照 -