Appels api asynchrones avec redux-saga
Je suis redux-saga de la documentation sur les helpers, et jusqu'à présent, il semble assez simple, cependant je suis tombé sur un problème quand il s'agit d'effectuer un appel d'api (comme vous le verrez lien vers les docs points par exemple)
Il y a une partie Api.fetchUser
qui n'est pas expliqué, donc je ne suis pas tranquille comprendre si c'est quelque chose que nous devons traiter avec des bibliothèques comme axios ou superagent? ou est-ce quelque chose d'autre. Et sont de la saga des effets comme call, put
etc.. équivalents de get, post
? si oui, pourquoi sont-ils nommés? Essentiellement, je suis à essayer de comprendre une bonne façon d'effectuer un simple appel post mon api à l'adresse url example.com/sessions
et de transmettre des données, comme la { email: 'email', password: 'password' }
source d'informationauteur Ilja
Vous devez vous connecter pour publier un commentaire.
Api.fetchUser
est une fonction, où doit être réalisée l'api ajax appeler et il doit retourner à la promesse.Dans votre cas, cette promesse doit résoudre des données de l'utilisateur variable.
Par exemple:
Est alors sagas:
call
put
sont des effets créateurs de fonctions. Ils ont pas quelque chose de familier avecGET
ouPOST
demandes.call
fonction est utilisée pour créer l'effet de la description, qui instruit middleware pour appeler la promesse.put
fonction crée l'effet, ce qui indique un middleware pour l'expédition d'une action de la banque.Des choses comme
call
put
take
race
sont des effets créateur fonctions. LeApi.fetchUser
est un espace réservé pour votre propre fonction qui gère les requêtes à l'API.Voici un exemple complet d'un loginSaga:
Dans cet extrait, le
SessionService
est une classe qui implémente unelogin
méthode qui traite la requête HTTP à l'API. Le redux-sagacall
va appeler cette méthode et appliquer les données de paramètre. Dans l'extrait ci-dessus, on peut alors évaluer le résultat de l'appel et l'envoiloginSuccess
ouloginError
actions en conséquence à l'aide deput
.Une note de côté: L'extrait ci-dessus est un loginSaga qui écoute en permanence pour la
USER_LOGIN
événement, mais se casse quand unLOCATION_CHANGE
qui se passe. C'est grâce à larace
effet créateur.