P粉2835590332023-08-18 15:20:03
你需要設定enableReinitialize
來允許Formik在更改時更新值。
const form = useFormik({ initialValues: ..., enableReinitialize: true //<-- 这里 });
你也可以在useEffect
中一次直接設定值。
useEffect(() => { if (projectData && .../*其他条件*/) { form.setValues(projectData) } }, [projectData])
P粉1762037812023-08-18 12:57:56
如果從API接收到的資料的結構與表單的結構相匹配,您可以使用setValues
方法一次設定整個狀態。
確保來自API回應的資料結構(projectData
)與您的initialValues
的結構相符。
使用setValues
方法一次更新所有值。
const form = useFormik({ initialValues: { name: "", login: "", about: { age: "", rank: { silver: true, gold: false, global: false } } } }); const { setValues } = form; useEffect(() => { if (projectData) { setValues(projectData); } }, [projectData]); // 设置来自API的响应