Kir*_*mar 19 reactjs react-hook-form
我使用react-hook-form进行表单验证和提交,使用单个提交类型按钮一切正常,现在我需要三个按钮,“保存草稿”,“预览页面中的数据值”和“提交审批”,我可以选择退出模式选择单选按钮,但想要具有三个按钮提交功能,这需要表单数据。为输入字段添加 onchnage 可以,但表单验证需要重新编写。
const { register, handleSubmit } = useForm();
const onSubmit = (data) => alert(JSON.stringify(data));
function NeedTohaveFormDataHere1(Data) {
} function NeedTohaveFormDataHere2(Data) {
}
return ( <form onSubmit={handleSubmit(onSubmit)}>
<Headers />
<input name="firstName" ref={register} placeholder="First name" />
<input name="lastName" ref={register} placeholder="Last name" />
<select name="category" ref={register}>
<option value="">Select...</option>
<option value="A">Category A</option>
<option value="B">Category B</option>
</select>
<button onClick={NeedTohaveFormDataHere1}>
Save Draft
</button >
<button onClick={NeedTohaveFormDataHere2}>
Preview
</button>
<input type="submit" />
</form>
);
}
Run Code Online (Sandbox Code Playgroud)
onSubmit函数会获取表单数据,其他两个按钮函数如何获取表单数据?
爱..与
<button onClick={handleSubmit(NeedTohaveFormDataHere1)}>
Save Draft
</button >
<button onClick={handleSubmit(NeedTohaveFormDataHere2)}>
Preview
</button>
Run Code Online (Sandbox Code Playgroud)
小智 20
我遇到了同样的问题,我通过以下方式解决了它:
我有两个按钮,第一个底部按钮正常验证并提交表单。第二个按钮仅验证并调用自定义函数。
我假设你也有这样的情况。一个用于保存的按钮,一个用于存储草稿的按钮。
<form id="example-form" onSubmit={handleSubmit(handleOnSave)}>
<IconButtonTooltip
form="example-form"
title="Only save"
>
<SaveIcon className={classes.icon} />
</IconButtonTooltip>
<IconButtonTooltip
form="example-form"
title="Save and sign"
onClick={handleSubmit(handleOnSingAndSave)}
>
<SignatureIcon className={classes.icon} />
</IconButtonTooltip>
</form>
const handleOnSingAndSave = () => {
// Handle things...
}
Run Code Online (Sandbox Code Playgroud)
这个对我有用!
小智 12
您可以在多个地方使用handleSubmit。
const handleSubmitDraft=()=>{
handleSubmit(aync(data)=>{...})()
}
const handleSubmitPreview=()=>{
handleSubmit((data)=>{...})()
}
Run Code Online (Sandbox Code Playgroud)
<button onClick={handleSubmitDraft}>
Save Draft
</button >
<button onClick={handleSubmitPreview}>
Preview
</button>
Run Code Online (Sandbox Code Playgroud)
ABH*_*IRE 11
如果你必须处理react-hook-form中的多个提交按钮
1.从表单标签中删除您的提交方法并将其添加到您的按钮单击中
2. 将提交按钮移到表单标签之外
const { handleSubmit } = useForm();
<form>
<input />
<input />
</form>
<button onClick={handleSubmit((d) => console.log(d))} > Save </button>
<button onClick={handleSubmit((d) => console.log(d))} > Draft </button>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37417 次 |
| 最近记录: |