Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
812 views
in Technique[技术] by (71.8m points)

reactjs - Recoil State is not updating properly

I have the following code.

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

After I submit a form, I am calling the setValues function. When I am console logging this verificationValues, it didn't update verificationValues. But if I console log the values after my submit handler then it works and shows the updated value. Also, I just noticed that it works after I press submit button again. Also setValues function is not async to take some time to complete. So why is this happening? I am so confused right now. Thanks in advance.

Important

Those nidOrPassport, addressProof, recentPhoto, etc. are objects


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It turned out it's actually a react problem. The setValues is updating the value but the updated value can only be accessed on the next render. So I have to use a useEffect hook and now it's working.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...