Recoil React:设置状态变量后立即使用它

问题描述 投票:0回答:1
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 批处理,但仍然无法获取最新值。

reactjs recoiljs react-18
1个回答
0
投票

据我所知,Recoil 并未设置为能够利用flushSync,请参阅:

https://github.com/facebookexperimental/Recoil/issues/1076

我能够设置反冲状态,然后通过使用

useRecoilCallback
立即使用新状态并在那里获取新状态的快照 -

© www.soinside.com 2019 - 2024. All rights reserved.