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的响应