⊗jsrxPmATDT 54 of 57 menu

Gegevens verzenden met behulp van thunk in Redux

In de vorige les hebben we de verwerking van een POST-verzoek op onze nep-server behandeld. Laten we nu een thunk-functie schrijven die het verzoek naar de server zal sturen.

Laten we onze applicatie met producten openen, en daarin het bestand productsSlice.js. Nu zullen we na de thunk fetchProducts met behulp van createAsyncThunk een thunk addProduct aanmaken:

export const addProduct = createAsyncThunk()

Als eerste parameter geven we aan createAsyncThunk 'products/addProduct' door, en als tweede een asynchrone callback, die een object met gegevens van het nieuwe product zal ontvangen:

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

In de code van deze callback roepen we de client aan, waaraan we het pad en het object met het product als parameters doorgeven, en vervolgens retourneren we de antwoordgegevens:

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

Laten we nu lager in de code kijken naar het veld reducers voor productsSlice. Eerder voegden we een nieuw product toe met behulp van de reducer productAdded, waarin we methodes reducer en prepare hadden. Nu genereren we de benodigde gegevens op de server en werken we met een thunk, dus we verwijderen hier volledig de reducer productAdded uit de code. En vervolgens voegen we in de methode extraReducers (aan het einde van de code) nog een extra reducer toe, die in het geval van een succesvol verzoek het nieuwe product rechtstreeks uit de payload van de action aan de slice products zal toevoegen (onthoud dat dergelijke code mogelijk is alleen dankzij de unieke createSlice):

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

Ja, trouwens, vergeet niet nanoid te verwijderen uit de importregels, en productAdded uit de export van actions aan het einde van het bestand.

Open je applicatie met studenten. Open daarin het bestand studentsSlice.js. Maak met behulp van createAsyncThunk nog een thunk addStudent aan, die een POST-verzoek naar de server zal sturen om een nieuwe student toe te voegen, zoals getoond in de les.

Voer vervolgens lager wijzigingen door voor studentsSlice: verwijder volledig de reducer studentAdded in de eigenschap reducers. En voeg in het veld extraReducers een extra reducer toe, die een nieuwe student aan de slice students zal toevoegen uit de payload van de action in het geval van een succesvol verzoek, zoals getoond in de les.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren