如何一次性设置formik表单的全部字段值?
解决方案
你可以直接通过Object.assign实现批量赋值,不管字段多少都能一行完成操作:
React.useEffect(() => { Object.assign(initialValues, address ?? {}); }, [address, initialValues]);
补充优化建议
- 如果你需要过滤
address里的多余字段,避免非表单属性写入初始值,可以搭配解构使用:
React.useEffect(() => { const { first_name, last_name, middle_name, label, description } = address ?? {}; Object.assign(initialValues, { first_name, last_name, middle_name, label, description }); }, [address, initialValues]);
- 直接修改
initialValues不符合Formik的规范设计,更稳妥的方式是调用Formik实例的resetForm方法,避免出现状态不同步的问题:
// 前提是你已经通过useFormik拿到了formik实例 React.useEffect(() => { formik.resetForm({ values: { ...formik.initialValues, ...(address ?? {}) } }); }, [address, formik]);
内容的提问来源于stack exchange,提问作者Omama Zainab
相关产品推荐
相关产品推荐

