1. Le problème est le suivant. Il y a une zone de saisie. Je veux vérifier si la valeur existe déjà dans la base de données au moment où nous enregistrons habituellement un e-mail, nous serons invités en temps réel si l'e-mail est présent. le nom a été utilisé. Auparavant, à l'ère de jquery, les requêtes ajax pouvaient être qualifiées de synchrones. Cependant, dans le framework antd+dva, les requêtes sont initiées via dispatch. Comment implémenter cela dans ce cas ?
Vous ne comprenez peut-être pas complètement certains concepts liés à Redux.
Ce que la répartition initie n'est pas une demande, mais une action qui change l'état global. Cependant, le scénario le plus courant pour modifier l'état des données est [l'envoi de requêtes réseau asynchrones]. Cela ne signifie pas que la requête doit être distribuée, ni que la répartition doit être utilisée dans des scénarios asynchrones.
Spécifique à votre question, l'état d'une zone de saisie est évidemment très local, et évidemment [dans des circonstances normales] n'est pas couplé à l'état des autres parties de la page. Ainsi, à ce stade, vous pouvez abandonner complètement le package Redux encapsulé par Dva, et à la place encapsuler un module basé sur fetch / axios / $.ajax pour vous fournir ce composant de zone de saisie.
Enfin, l'Ajax synchrone est une mauvaise pratique. Il est recommandé d'encapsuler les requêtes asynchrones sous forme de Promise.
Réponse correcte de @ewind
En fait, la raison pour laquelle j'ai toujours été confus auparavant est que je ne savais pas que la méthode validateFields du composant form du framework antd bloquerait automatiquement les opérations asynchrones. n'a pas renvoyé le formulaire qui avait été soumis auparavant.