javascript - 如何使react-hook-form在一页中使用多个表单?

标签 javascript reactjs react-hook-form

我在我的项目中使用react-hook-form,并且有两个完全独立的表单,但是当我提交其中一个表单时,如果需要另一个表单中的某些字段,我无法提交当前表单,请检查demo ,并尝试提交其中一个表单,这些表单应该彼此独立工作,但看起来它们相互依赖。

最佳答案

您对两种表单使用相同的钩子(Hook)实例。您必须以不同的名称重复使用。

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);

关于javascript - 如何使react-hook-form在一页中使用多个表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60276510/

相关文章:

javascript - 使用javascript对结果进行编号时如何用字母代替数字

javascript - RadioButton 不访问搜索使用 Jquery Ajax

javascript - 文本框和下拉框在一起

reactjs - 如何强制服务器端提供路由

reactjs - 将 react-hook-form 与 typescript 和 material-ui 一起使用以显示错误消息的正确方法

javascript - 删除内部没有 <img> 的 DOM 生成元素

javascript - 谷歌地图 React/Redux 组件

javascript - 子页面与react-router 4不匹配

reactjs - React JS 多个提交按钮 react-hook-form

reactjs - React Hook Forms + Material UI 复选框