[React]バリデーション

Reactでバリデーションを行う時に使うライブラリReact Hook Form

これを使うとバリデーションが簡単みたい。

使い方はこんな感じ

import { useForm } from 'react-hook-form'

export const Login = () => {

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

    return (		
       <div className={classes.outer}>
           <form onSubmit={handleSubmit(onSubmit)}>
               <h1>ログイン</h1>
               <div className={classes.card}>            
                   <p>メールアドレス</p>
                   <TextField
                       type="text"
                       value={mail}
                       onChange={inputMail}
                       name="email"
                       inputRef={register({
                           required: "Required",
                           pattern: {
                               value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
                               message: "invalid email address"
                           }
                       })}
                   />
                   {errors.email && errors.email.message}
                   <p>パスワード</p>
                   <TextField
                       name="password"
                       type="password"
                       value={password}
                       onChange={inputPassword}
                       inputRef={register({
                           required: "You must specify a password",
                           minLength: {
                               value: 8,
                               message: "Password must have at least 8 characters"
                           }
                       })}
                   />
                   {errors.password && <p>{errors.password.message}</p>}
               </div>
               <Button
                   variant="contained" color="primary"          
                   onClick={pushLoginBtn} 
                   type="submit"
               >ログインする</Button>
           </form>

       </div>
   );
}

バリデーションを行う箇所をformで囲う。コンポーネントに名前を指定しrefを設定する。すぐ下に{errors.email && errors.email.message}こんな感じで含める。このときのemailはコンポーネントに指定した名前。Buttonのタイプをsubmitにする。

Material UIのコンポーネントで使用するにはrefをinputRefにする。



いいなと思ったら応援しよう!