サイト名変更・お引越しのお知らせ

【React Native】react-hook-formで小数点の桁数をバリデーションする方法を解説

react-hook-formで小数点の桁数をバリデーションする方法を解説します。

TypeScriptで実装しているので、使っていない方は適時型情報を削除してください。

バージョン
  • react-native 0.63.2
  • react-hook-form 6.0.6

react-hook-formの基本的な使い方についてはこちらで解説しています。

【React Native】react-hook-formの基本的な使い方を解説

小数点の桁数をチェックする関数を定義

まずは、小数点の桁数をチェックする関数を定義していきます。

// 小数点を返すメソッド
export const checkDecimalLength = (value: number) => {
  // 文字列に一度直し、誤差をなくす
  const d = String(value).split('.')[1];
  return d ? d.length : 0;
};

react-hook-formでバリデーションを設定する

validaterulesに渡すことで、カスタムバリデーションが張れるのでそれを使います。

モグモグさん

validateの詳細に関しては、公式のドキュメントを参照してください。

桁数は、ご自身が設定したい数値に合わせてください。

また、こちらのコードではerrorsmessageを取得したかったため文字列を返していますが、booleanを返すことも可能です。

rules={{
  required: '必須項目です',
  validate: {
    decimalLength: (value) => {
    const length = checkDecimalLength(value);
    if (length > 1) {
      return '小数点は第一までで入力してください';
    }
    return true;
    },
  },
}}

実行結果

例として、上のコードを実装した、体重を入力するフォームを実行した結果です。

まとめ

react-hook-formで、小数点をバリデーションする方法について解説しました。

Tipsの1つですが、参考になれば幸いです。