我试图用它的特殊数据initialValue填充formik表单的onClick。当使用initialValue ()时,将表单清除回第一个reForm (initValues)不起作用,而且它总是返回到道具的值。
家长:
const [contactData, setContactData] = useState();
.
..
....
<First userData={contactData}/>
<Second userData={setContactData}/>儿童:
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();
}将initialValues替换为formik.resetForm()中的initValues似乎是可行的,但它使表单重新初始化为userData prop - function FormComponent({userData})
发布于 2021-08-31 14:57:48
部分固定..。刚刚将formik.resetForm()中的resForm()修改为
formik.resetForm({
values:initValues
});但是当控制台登录到userData()时,来自父服务器的道具(userData)仍然保持不变。
https://stackoverflow.com/questions/68999841
复制相似问题