LoginSignup
0
0

More than 1 year has passed since last update.

React Hook Form バリーデーション実装

Posted at

ReactHookを使ってバリデーション機能実装の復習用記事です。

React Hook Form・・・入力フォームの管理に特化したReact向けのライブラリ
https://ja.reactjs.org/docs/uncontrolled-components.html

バリデーション

実装コード

react.tsx

const {
  register,
  handleSubmit,
  formSteate: { errors }
} = useForm<Values>();

useFormからメソッドを受け取る

register・・・入力または選択された要素を登録
handleSubmit・・・検証が成功するとフォーム内のデータを受け取る
formSteate: { errors }・・・バリデーションエラーを受け取る

react.tsx

<input id="email"
       name="email"
       type="text"
       {...register("email", 
           {required: true,
           pattern:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,})}/>

inputに入力した内容がregisterに登録された内容で検証される

react.tsx

<span className="text-red-600">
      {errors.email?.type === "required" && "メールアドレスを入力してください"}
      {errors.email?.type === "pattern" && "正しい形式でメールアドレスを入力してください"}
</span>

registerでエラーが発生した場合、そのregisterに設定したkeyでerrorから取り出すことができる{error.key}
エラーが存在しているかどうかでエラーメッセージを表示する
※typeでどの条件のエラーかを判別

submitを押さなくてもバリデーションが行われる

react.tsx

const {
  register,
  handleSubmit,
  formSteate: { errors }
} = useForm<Values>({mode:"onChange"});

mode:"onChange" ・・・submitを押さなくてもonChangeでバリデーションが実行される

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0