Formik 表格不会清除
Formik form won't clear out
我试图用 onClick 的临时数据填充我的 formik 表单的初始值。
使用 reForm() 时,将表单清除回其第一个初始值 (initValues) 不起作用,它总是返回到 prop 的值。
parent:
const [contactData, setContactData] = useState();
.
..
....
<First userData={contactData}/>
<Second userData={setContactData}/>
child:
function FirstComponent({userData}) {
const [isUpdate, setUpdate] = useState(false);
const initValues = {
id:'',
email: '',
name: '',
contact: ''
};
useEffect(() => {
// setContactData(userData)
userData!==undefined ? setUpdate(true) : setUpdate(false);
console.log("from form: ", userData)
}, [userData]);
const formik = useFormik({
enableReinitialize: true,
validationSchema: FormSchema,
initialValues: userData || initValues,
onSubmit: (values) => {
// same shape as initial values
console.log("the Data ", userData)
console.log("onsubmit ", values);
}
})
const resForm = () => {
formik.initialValues = {initValues};
console.log("prop ", userData)
console.log("formik values ",formik.initialValues)
formik.resetForm();
}
用 formik.resetForm() 中的 initValues 替换 initialValues 似乎可行,但它使表单重新初始化为 userData prop - function FormComponent({userData})
部分修复..
刚刚将 resForm() 中的 formik.resetForm()
修改为
formik.resetForm({
values:initValues
});
但是当控制台登录 resForm()
时,来自父级的 prop (userData) 仍然存在
我试图用 onClick 的临时数据填充我的 formik 表单的初始值。 使用 reForm() 时,将表单清除回其第一个初始值 (initValues) 不起作用,它总是返回到 prop 的值。
parent:
const [contactData, setContactData] = useState();
.
..
....
<First userData={contactData}/>
<Second userData={setContactData}/>
child:
function FirstComponent({userData}) {
const [isUpdate, setUpdate] = useState(false);
const initValues = {
id:'',
email: '',
name: '',
contact: ''
};
useEffect(() => {
// setContactData(userData)
userData!==undefined ? setUpdate(true) : setUpdate(false);
console.log("from form: ", userData)
}, [userData]);
const formik = useFormik({
enableReinitialize: true,
validationSchema: FormSchema,
initialValues: userData || initValues,
onSubmit: (values) => {
// same shape as initial values
console.log("the Data ", userData)
console.log("onsubmit ", values);
}
})
const resForm = () => {
formik.initialValues = {initValues};
console.log("prop ", userData)
console.log("formik values ",formik.initialValues)
formik.resetForm();
}
用 formik.resetForm() 中的 initValues 替换 initialValues 似乎可行,但它使表单重新初始化为 userData prop - function FormComponent({userData})
部分修复..
刚刚将 resForm() 中的 formik.resetForm()
修改为
formik.resetForm({
values:initValues
});
但是当控制台登录 resForm()
时,来自父级的 prop (userData) 仍然存在