1. 問題はこれです。入力ボックスがあります。onBlur の時點で値がデータベースにすでに存在するかどうかを確認(rèn)したいのです。通常メールを登録するときと同じように、リアルタイムでプロンプトが表示されます。メール名が使用されています。以前、jquery の時代には、ajax リクエストは同期と呼ばれることがありました。ただし、antd dva フレームワークでは、リクエストはディスパッチによって開始されます。この場合、これをどのように実裝すればよいでしょうか?
Redux に関連するいくつかの概念を完全に理解していない可能性があります。
ディスパッチが開始するのはリクエストではなく、グローバル狀態(tài)を変更するアクションです。ただし、データ ステータス アクションを変更する最も一般的なシナリオは [非同期ネットワーク リクエストの送信] です。これは、リクエストをディスパッチする必要があるという意味ではなく、非同期シナリオでディスパッチを使用する必要があるという意味でもありません。
あなたの質(zhì)問に特有ですが、入力ボックスの狀態(tài)は明らかに非常にローカルであり、明らかに[通常の狀況では]ページの他の部分の狀態(tài)と連動していません。したがって、現(xiàn)時點では、Dva によってカプセル化された Redux パッケージを完全に放棄し、代わりに fetch / axios / $.ajax に基づいてモジュールをカプセル化し、この入力ボックス コンポーネントを提供できます。
最後に、同期 Ajax は悪い習(xí)慣です。非同期リクエストを Promise としてカプセル化することをお勧めします。
@ewind さんの正しい返信
実際、私がこれまでずっと混亂していた理由は、antd フレームワークのフォーム コンポーネントの validateFields メソッドが非同期操作を自動的にブロックすることを知らなかったためです。私は常に非同期検証だと思っていました。以前に提出したフォームを返卻しませんでした。