Open1

【React-hook-form】バリデーションフォームを作成する

yu.miyoshiyu.miyoshi

概要

React-hook-formを用いて、バリデーションフォームの作成をしてみる

React-hook-formを用いて、フォームの実装をする。
特にバリデーションの実装が楽になるそうなので、実際に試してみる。
React-hook-form公式のでもソースコードを記述する。

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

type Inputs = {
  example: string,
  exampleRequired: string,
};

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

  console.log(watch("example")) // watch input value by passing the name of it

  return (
    <form onSubmit={handleSubmit(onSubmit)}>
      <input name="example" defaultValue="test" ref={register} />
      <input name="exampleRequired" ref={register({ required: true })} />
      {errors.exampleRequired && <span>This field is required</span>}
      <input type="submit" />
    </form>
  );
}

React-hook-formは必要なメソッドやフォームをuseFormでimportし使用する。
登録したいフィールドにname="uniqueName"とref={register}を加える。

<input name="example" defaultValue="test" ref={register} />
<input name="exampleRequired" ref={register({ required: true })} />
{errors.exampleRequired && <span>必須項目です。</span>

requiredはバリデーションの際に必須入力項目。
他にもMax文字数、min文字数なども設定でき、正規表現やバリデーション関数を渡すことも可能。

備考

Material-uiのTextFieldを用いたバリデーションも同時に使用する場合についても新たに記事を書いていきたい。

参考サイト

https://qiita.com/akihiro_FE/items/b2295e6b98e8e8c881ed#react-hook-formで実装