nomurabbitのブログ

nomurabbitのブログはITを中心にした技術ブログです。

nomurabbitのブログ

【React】React Hook Formの "はじめる" を始めてみた Part7【Typescript】

この記事はReact Hook Formの公式サイトにあるはじめるの項目を元に構成されています。ReactとTypescriptのサンプルコードを使って解説しています。

こんにちは!らびです。今回はReact Hook Formに関する記事です。

公式サイトのチュートリアルを使って一緒に勉強していきましょう。

エラーを処理する

今回はバリデーションでエラーを検知した際の挙動について紹介します。まずはサンプルコードをReactのプロジェクトにうつしてみましょう。

import React from 'react';
import { useForm, SubmitHandler } from "react-hook-form";
import {List, ListItem} from '@mui/material';
import ResponsiveDrawer from '../components/layout/ResponsiveDrawer';

interface IFormInputs {
  firstName: string
  lastName: string
}

const Home8 = () => {
  const { register, formState: { errors }, handleSubmit } = useForm<IFormInputs>();
  const onSubmit: SubmitHandler<IFormInputs> = (data) => {
    console.log(data);
  }
  
  return (
    <ResponsiveDrawer>
      <div>
        <form onSubmit={handleSubmit(onSubmit)}>
          <List>
            <ListItem>
              <label>First Name</label>
              <input {...register("firstName", { required: true })} />
              {errors.firstName && "First name is required"}
            </ListItem><ListItem>
              <label>Last Name</label>
              <input {...register("lastName", { required: true })} />
              {errors.lastName && "Last name is required"}
            </ListItem><ListItem>
              <input type="submit" />
            </ListItem>
          </List>
        </form>
      </div>
    </ResponsiveDrawer>
  );
}
  
export default Home8;

errorsのプロパティでエラー判定しているジョ。

コンポーネント(実行結果)
f:id:nomurabbit:20220115175542p:plain

import

importはuseFormとSubmitHandlerだけでOKです。

import { useForm, SubmitHandler } from "react-hook-form";

プログラムを読み進めていくと、formState: { errors }を取り出して使っているのがわかりますね。

const { register, formState: { errors }, handleSubmit } = useForm<IFormInputs>();

実装

<label>First Name</label>
<input {...register("firstName", { required: true })} />
{errors.firstName && "First name is required"}

errorsのプロパティの真偽判定をしてエラー処理しているジョ。

まとめ

というわけで、今回もReact Hook Formはじめるについて勉強してきましたが、いかがでしたでしょうか?

errorsのプロパティから判定結果を読み取るのがポイントですね。

次回もぜひご覧ください。では!

参考

React Hook Form
react-hook-form.com