reactjs 反冲状态未正确更新

tjrkku2a  于 2023-01-08  发布在  React
关注(0)|答案(1)|浏览(156)

我有以下代码。

const [verificationValues, setValues] = useRecoilState(verificationFormValues);
setValues({
   ...verificationValues!,
   nidOrPassport,
   addressProof,
   recentPhoto,
   bankAccountStateMents,
   businessProof,
   salarySlip,
   employeeIdCard,
});

在我提交表单之后,我调用setValues函数。当我控制台记录这个verificationValues时,它没有更新verificationValues。但是如果我控制台记录提交处理程序之后的值,它就会工作并显示更新后的值。另外,我刚刚注意到它在我再次按提交按钮后工作。而且setValues函数不是异步的,需要一些时间来完成。那么为什么会发生这种情况呢?我现在很困惑,先谢了.

重要

那些nidOrPassport、addressProof、recentPhoto等都是对象

nukf8bse

nukf8bse1#

结果发现这实际上是一个react问题,setValues正在更新值,但更新后的值只能在下一次渲染时访问,所以我必须使用useEffect钩子,现在它工作了。

useEffect(() => {
    console.log(verificationValues);
  }, [verificationValues]);

2022年7月更新

React Now支持自动批处理。因此,如果您使用React 18或更早版本,则可以通过使用flushSync来避免此问题。
Learn More on Github Discussions

相关问题