フォーム送信ハンドラー内からカスタム フック setState を呼び出しても状態が更新されない
P粉976488015
P粉976488015 2023-09-16 11:39:44
0
1
948

エラー メッセージを表示するには、フォーム内のフィールドに注目する必要があります。フィールドにまだフォーカスを当てていないときに「送信」をクリックしたときにエラー メッセージが表示されるようにしたいと考えています。

これはフックです (後の setIsTouched 呼び出しに関するものであると思われます):

リーリー

これはフォーム ハンドラーです (各フィールドにエイリアスを使用しました):

リーリー

検証名フィールドを例として、最初に送信ボタンをクリックします。 現在、 const hasError = errorArray.length > 0 && isTouched; 配列には要素がありますが、フィールドにフォーカスがないため isTouched は false です。

次に「touchNameField(true);」が登場します。 hasErrorをtrueにしてみましたが、まだfalseと表示されます。

setState 呼び出しは非同期ですが、それが問題ですか?リセット呼び出しを削除すると機能します。しかし、なぜnameInputErrorなどがfalseになるのかはまだわかりません。

P粉976488015
P粉976488015

全員に返信(1)
P粉057869348

これを実行しない場合は、errorArrayhasError が変更に反応していないためだと思います。したがって、そのフックをインスタンス化する場所によっても異なります。 テストを行わない場合 私なら次のことを試します:

リーリー

繰り返しになりますが、テストされていないため、調整が必要になる可能性があります。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート