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) 仍然存在