⊗jsrxPmATDT 54 of 57 menu

Envoi de données avec un thunk dans Redux

Lors de la dernière leçon, nous avons examiné le traitement d'une requête POST sur notre faux serveur. Maintenant, écrivons une fonction thunk qui enverra la requête au serveur.

Ouvrons notre application avec les produits, et dans celle-ci le fichier productsSlice.js. Maintenant, après le thunk fetchProducts, nous allons utiliser createAsyncThunk pour créer le thunk addProduct :

export const addProduct = createAsyncThunk()

Comme premier paramètre, nous passerons à createAsyncThunk 'products/addProduct', et comme deuxième paramètre une callback asynchrone, qui prendra un objet avec les données du nouveau produit :

export const addProduct = createAsyncThunk( 'products/addProduct', async (newProduct) => {} )

Dans le code de cette callback, nous appellerons le client, en lui passant comme paramètres le chemin et l'objet contenant le produit, puis nous retournerons les données de la réponse :

export const addProduct = createAsyncThunk( 'products/addProduct', async (newProduct) => { const response = await client.post('/fakeServer/products', newProduct) return response.data } )

Maintenant, regardons plus bas dans le code le champ reducers pour productsSlice. Auparavant, nous ajoutions un nouveau produit en utilisant le réducteur productAdded, dans lequel nous avions les méthodes reducer et prepare. Maintenant nous générons les données nécessaires sur le serveur et travaillons avec un thunk, donc nous allons retirer complètement ici le réducteur productAdded du code. Puis nous ajouterons dans la méthode extraReducers (à la fin de son code) un autre réducteur supplémentaire, qui en cas de requête réussie ajoutera dans le slice products le nouveau produit directement à partir du payload de l'action (souvenez-vous qu'un tel code n'est possible que grâce à l'inimitable createSlice) :

.addCase(addProduct.fulfilled, (state, action) => { state.products.push(action.payload) })

Oui, au fait, n'oubliez pas de retirer nanoid des lignes d'importation, et productAdded de l'export des actions à la fin du fichier.

Ouvrez votre application avec les étudiants. Ouvrez dans celle-ci le fichier studentsSlice.js. À l'aide de createAsyncThunk, créez un autre thunk addStudent, qui enverra une requête POST au serveur pour ajouter un nouvel étudiant, comme montré dans la leçon.

Ensuite, plus bas, apportez les modifications pour studentsSlice : retirez complètement le réducteur studentAdded dans la propriété reducers. Et dans le champ extraReducers, ajoutez un réducteur supplémentaire, qui ajoutera un nouvel étudiant dans le slice students à partir du payload de l'action en cas de requête réussie, comme montré dans la leçon.

Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser