reactjs - react-hook-form 触发后如何删除 onSubmit 数据负载?
问题描述
我有一个动态表单,每次触发onSubmit
按钮时表单数据状态都会发生变化,问题是即使表单发生变化,旧表单状态的旧数据也不会被删除
const onSubmit = (data) => {
const formData = new FormData();
console.log({ form, data }); // <- I want to delete data everytime submit is triggered
let dataPayload = {};
for (const key in data) {
if (formIndex === 2) {
dataPayload = data;
return dispatch(postData({ dataPayload, formIndex, url }));
} else {
let item = data[key];
if (typeof item === "object") {
item[0] ? formData.append(key, item[0]) : formData.append(key, "");
} else {
formData.append(key, item);
}
}
}
dataPayload = formData;
dispatch(postData({ dataPayload, formIndex, url }));
};
案子
第一次提交:数据有17个属性表单有17个元素
第二次提交数据有 27 个属性表单有 10 个元素
第三次提交数据有33个属性表单有6个元素
我的组件
<form autoComplete='off' onSubmit={handleSubmit(onSubmit)}>
{form.length > 0 &&
form.map((el) => (
<Input
key={el.id}
item={el.id}
placeholder={el.data.placeholder}
type={el.data.type}
element={el.data.element}
register={register}
/>
))}
<Container>
{!complete && (
<Button
fullWidth
style={{ margin: "10px auto" }}
color='secondary'
type='submit'
variant='contained'
endIcon={loading ? <CircularProgress size={10} color='info' /> : <NavigateNext />}>
{formIndex !== 2 ? "Next" : "Generate Link"}
</Button>
)}
</Container>
</form>
解决方案
reset()
在这种情况下会很方便:
const { register, handleSubmit, reset } = useForm();
const onSubmit = (data) => {
// do your own thing
reset(); // wipe out the old data
}
推荐阅读
- django - 让 Django ORM 自动获取属性
- java - Firebase“sendSignInLinkToEmail”方法发送一封没有安卓链接的邮件
- reactjs - React Router history.push() 改变了 url 但没有渲染组件内容
- vb.net - 与另一个 DLL 结合时,为什么我会从 Azure 存储文件共享包中获取错误
- c++ - SDL2 - 如何从外部像素阵列正确流式传输纹理(使用锁定和解锁)
- access-token - Insomnia 为其他 API 调用配置 OAuth 2.0 grant_type 密码访问令牌
- python - 如何在库存透视报告视图中添加新字段。奥多 14
- javascript - 从 API Json 获取价值
- javascript - 无法使用 NuxtJS + Vite 加载 SVG
- javascript - WinstonJS 在文件过大时使用文件名中的时间戳或索引旋转文件