javascript - 使用 React Hook Form 不会显示验证错误

标签 javascript reactjs react-hook-form

我正在使用React Hook Form为了验证一些简单的输入:

import React from "react";
import useForm from "react-hook-form";

import "./App.css";

function App() {
  const { register, handleSubmit, errors } = useForm();
  const onSubmit = data => {
    console.log(data);
  };

  return (
    <div className="App">
      <header className="App-header">
        <form onSubmit={handleSubmit(onSubmit)}>
          <input
            className="mkn-input"
            name="firstName"
            placeholder="First name"
            ref={register({
              required: true,
              maxlength: 20,
              message: "invalid first name"
            })}
          />
          <span> {errors.firstName && errors.firstName.message}</span>

          <input
            placeholder="Last name"
            className="mkn-input"
            name="lastName"
            ref={register({
              pattern: /^[A-Za-z]+$/i,
              message: "Invalid last name"
            })}
          />
          {errors.lastName && <span> errors.lastName.message</span>}
          <input
            name="age"
            type="number"
            placeholder="Age"
            className="mkn-input"
            ref={register({ min: 18, max: 99 })}
          />
          <input type="submit" className="mkn-btn" />
        </form>
      </header>
    </div>
  );
}

export default App;

但是我遇到了一个奇怪的问题,在 DOM 中显示错误,我也尝试将它们记录在控制台中,但没有成功,我错过了什么?

完整代码:

Edit React Hook Form - Custom Input

最佳答案

您需要在required字段中添加message,或者只是查询是否有错误:

<>
  <input
    name="firstName"
    placeholder="First name"
    ref={register({
      required: 'invalid first name'
    })}
  />
  <span> {errors.firstName && errors.firstName.message}</span>
</>

// Or 
<>
  <input
    placeholder="Last name"
    className="mkn-input"
    name="lastName"
    ref={register({
      required: true,
      pattern: /^[A-Za-z]+$/i
    })}
  />
  {errors.lastName && <span>Invalid last name</span>}
</>

// Or https://react-hook-form.com/advanced-usage#ErrorMessage
function App() {
  const { register, handleSubmit, errors } = useForm();
  const onSubmit = data => {
    console.log(data);
  };

  return (
    <div className="App">
      <header className="App-header">
        <form onSubmit={handleSubmit(onSubmit)}>
          <input
            className="mkn-input"
            name="firstName"
            placeholder="First name"
            ref={register({
              required: 'invalid first name'
            })}
          />
          <span> {errors.firstName && errors.firstName.message}</span>

          <input
            placeholder="Last name"
            className="mkn-input"
            name="lastName"
            ref={register({
              required: true,
              pattern: /^[A-Za-z]+$/i
            })}
          />
          {errors.lastName && <span>Invalid last name</span>}
          <input
            name="age"
            type="number"
            placeholder="Age"
            className="mkn-input"
            ref={register({ min: 18, max: 99 })}
          />
          <input type="submit" className="mkn-btn" />
        </form>
      </header>
    </div>
  );
}

Edit React Hook Form - Custom Input

关于javascript - 使用 React Hook Form 不会显示验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58797968/

相关文章:

css - React Carousal 渲染黑色背景的透明图像

javascript - 如何创建动态字典和添加删除键值对?

javascript - TypeError : e. preventDefault 不是 React Hook Form 上使用 EmailJs 的函数

reactjs - 使用 material-ui TextField 进行最新的 react-hook-form 错误处理

javascript - 很好地 chop 字符串以适应给定的像素宽度

javascript - 如果在 jsTree 中选择了任何第 (n-1) 个节点,如何禁用第 n 级节点

javascript - 如何创建一个在 React 中的 onClick 方法上接受参数的按钮组件?

javascript - 函数在传递给函数组件时不执行

javascript - Angular UI-Router 中的嵌套 View 在状态更改期间滞后

reactjs - React Hook Forms 如何使用 Typescript 将错误作为 Prop 传递