点击提交按钮后,在提交之前会重置表单。
我使用Formik创建了一个表单。我尝试使用Formik的resetForm在提交后重置表单。但是它在提交之前重置了表单并提交了一个空表单。这是我的表单:
<Formik onSubmit={handleFormSubmit} initialValues={{ content: "", picture: "", }} > {({ values, handleBlur, handleChange, handleSubmit, setFieldValue, resetForm, }) => ( <form onSubmit={handleSubmit}> <Field as="textarea" onBlur={handleBlur} onChange={handleChange} value={values.content} name="content" /> <Dropzone acceptedFiles=".jpg, .jpeg, .png" multiple={false} onDrop={(acceptedFiles) => setFieldValue("picture", acceptedFiles[0]) } > {({ getRootProps, getInputProps }) => ( <div {...getRootProps()}> <input {...getInputProps} /> {!values.picture ? ( <p>在这里添加图片</p> ) : ( values.picture.name )} </div> )} </Dropzone> <button type="submit" onClick={resetForm}>提交</button> </form> )} </Formik>
我不确定是否应该分享handleFormSubmit函数,但是这是它:
const handleFormSubmit = async (values, onSubmitProps) => { const formData = new FormData(); for (let value in values) { formData.append(value, values[value]); } formData.append("picturePath", values.picture.name); fetch(`http://localhost:5000/api/home-profile/${data[0]._id}`, { method: "PUT", body: formData, headers: { Authorization: "Bearer " + token, }, }) .then((res) => { console.log(res.status); }) .catch((err) => { console.log(err); }); };
删除 onClick={resetForm} :
然后在你的 handleFormSubmit 中:
...
如果对你有用,请告诉我。