点击提交按钮后,在提交之前会重置表单。
我使用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);
});
}; Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
删除 onClick={resetForm} :
然后在你的 handleFormSubmit 中:
...
.then((res) => { console.log(res.status); }) .catch((err) => { console.log(err); }) .finally(() => { resetForm(); //this });如果对你有用,请告诉我。