我有以下代码。
const [verificationValues, setValues] = useRecoilState(verificationFormValues);
setValues({
...verificationValues!,
nidOrPassport,
addressProof,
recentPhoto,
bankAccountStateMents,
businessProof,
salarySlip,
employeeIdCard,
});
在我提交表单之后,我调用setValues函数。当我控制台记录这个verificationValues时,它没有更新verificationValues。但是如果我控制台记录提交处理程序之后的值,它就会工作并显示更新后的值。另外,我刚刚注意到它在我再次按提交按钮后工作。而且setValues函数不是异步的,需要一些时间来完成。那么为什么会发生这种情况呢?我现在很困惑,先谢了.
重要
那些nidOrPassport、addressProof、recentPhoto等都是对象
1条答案
按热度按时间nukf8bse1#
结果发现这实际上是一个react问题,setValues正在更新值,但更新后的值只能在下一次渲染时访问,所以我必须使用useEffect钩子,现在它工作了。
2022年7月更新
React Now支持自动批处理。因此,如果您使用React 18或更早版本,则可以通过使用flushSync来避免此问题。
Learn More on Github Discussions