2

我有以下代码。

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

提交表单后,我正在调用 setValues 函数。当我在控制台记录此验证值时,它没有更新验证值。但是,如果我在提交处理程序之后控制台记录值,那么它会起作用并显示更新的值。另外,我只是注意到再次按下提交按钮后它可以工作。setValues 函数也不是异步的,需要一些时间才能完成。那么为什么会这样呢?我现在很困惑。提前致谢。

重要的

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

4

1 回答 1

2

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

useEffect(() => {
    console.log(verificationValues);
  }, [verificationValues]);
于 2020-12-30T13:07:59.457 回答