我在我的项目中使用 react-hook-form 并且我有 2 个完全独立的表单,但是当我提交其中一个表单时,如果需要另一个表单中的某些字段,我无法提交当前表单,请查看演示,并尝试提交其中一个表单,这些表单应该彼此独立工作,但看起来它们相互依赖。
请问有什么帮助吗?
我在我的项目中使用 react-hook-form 并且我有 2 个完全独立的表单,但是当我提交其中一个表单时,如果需要另一个表单中的某些字段,我无法提交当前表单,请查看演示,并尝试提交其中一个表单,这些表单应该彼此独立工作,但看起来它们相互依赖。
请问有什么帮助吗?
欢迎使用 StackOverflow @webcoder 您正在为两种表单使用相同的钩子实例。您将不得不使用不同的名称重复使用。
import React from "react";
import ReactDOM from "react-dom";
import { useForm } from "react-hook-form";
import "./styles.css";
function App() {
const {
register,
formState: { errors },
handleSubmit,
} = useForm({
mode: "onBlur",
});
const {
register: register2,
formState: { errors: errors2 },
handleSubmit: handleSubmit2,
} = useForm({
mode: "onBlur",
});
const onSubmit = (data) => {
alert(JSON.stringify(data));
};
const onSubmitEmail = (data) => {
alert(JSON.stringify(data));
};
return (
<div className="App">
<form key={1} onSubmit={handleSubmit(onSubmit)}>
<div>
<label htmlFor="firstName">First Name</label>
<input
name="firstName"
placeholder="bill"
ref={register({ required: true })}
/>
{errors.firstName && <p>This is required</p>}
</div>
<div>
<label htmlFor="lastName">Last Name</label>
<input
name="lastName"
placeholder="luo"
ref={register({ required: true })}
/>
{errors.lastName && <p>This is required</p>}
</div>
<input type="submit" />
</form>
<form key={2} onSubmit={handleSubmit2(onSubmitEmail)}>
<div>
<label htmlFor="email" placeholder="bluebill1049@hotmail.com">
Email
</label>
<input name="email" ref={register2({ required: true })} />
{errors2.email && <p>This is required</p>}
</div>
<input type="submit" />
</form>
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
快速更新 Faizaan 的回答:就我而言,errors
应该与 一起使用formState
,而不是单独使用。因此,该属性应导入为:
const { formState: { errors } } = useForm();
const { formState: { errors: errors2 } } = useForm();
名称可能令人困惑,但这些是我得出的解决方案。