質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

345閲覧

react-hook-formについて

miyu_

総合スコア70

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2022/01/20 01:28

rhf(react-hook-form)のhandleSubmitに渡された関数はrhfのバリデーション後に実行されますが、バリデーションが成功する前に実行する関数を追加することは可能でしょうか。

react-hook-formを使わない独自のバリデーションがあるのですが、onSubmitに記述すると発火のタイミングが合わず、rhfのバリデーションが通った後にバリデーションエラーが出るので、タイミングを同時に合わせる方法をご教示いただけますと幸いです。

<Sample> ```React.js import React from "react"; import { useForm } from "react-hook-form";

export default function App() {
const { register, handleSubmit } = useForm();
const onSubmit = (data, e) => 独自バリデーション処理;

return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register("firstName")} />
<input {...register("lastName")} />
<button type="submit">Submit</button>
</form>
);
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

jsx

1<form 2 onSubmit={(e) => { 3 e.preventDefault(); 4 // ここで任意のコード実行 5 console.log("custom function here"); 6 handleSubmit(onSubmit)(); 7 // return false; 8 }} 9>

でできそうです

参考:https://github.com/react-hook-form/react-hook-form/discussions/1669

投稿2022/01/20 06:14

sum6

総合スコア232

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyu_

2022/01/21 09:30 編集

ご回答いただきありがとうございます! 何とご丁寧に参考リンクまで頂きご親切に感謝しております。 こちら現在、確認中です。 調査が長続きしている原因としては、子コンポーネントの入力値?またはdata?を引数とする関数を実行したい点です。 handleSubmitがdataをオブジェクトの形で渡してくれるので、onSubmit関数の定義内で使用できるようです。 また、現状の実装においてonSubmitのdataにRecoilで定義したstateが入っており、dataの挙動も確認したいです。 再度、整理・調査を行い週明けに調査結果をご報告致します。 よろしくお願いいたします。 cf.) React hook formではe.preventDefaultは必要ないようです。(javascriptでは必要ですね。) https://qiita.com/NozomuTsuruta/items/60d15d97eeef71993f06
sum6

2022/01/21 15:29

> React hook formではe.preventDefaultは必要ないようです。 こうすれば確かに必要ないですね!気づきませんでした。 `handleSubmit(onSubmit)(e);` 調査がんばってください ٩( ᐛ )و
miyu_

2022/01/24 01:45

調査の結果こちらで実現できるようでした! ご回答いただきありがとうございましたmm dataの挙動は少し複雑になっているようでした。 https://zenn.dev/susiyaki/articles/20670b15e000ef 引き続き、何か情報があればこちら更新致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問