⊗jsrxPmATDT 54 of 57 menu

Skicka data med hjälp av thunk i Redux

I föregående lektion gick vi igenom hanteringen av en POST-förfrågan på vår falska server. Låt oss nu skriva en thunk-funktion som kommer att skicka förfrågan till servern.

Vi öppnar vår produktapplikation, och i den filen productsSlice.js. Nu efter thunk fetchProducts skapar vi en thunk addProduct med hjälp av createAsyncThunk:

export const addProduct = createAsyncThunk()

Som första parameter skickar vi in 'products/addProduct' i createAsyncThunk, och som andra parameter en asynkron callback-funktion som tar emot ett objekt med data för den nya produkten:

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

I koden för denna callback anropar vi klienten, skickar sökvägen och produktobjektet som parametrar, och returnerar sedan svarsdata:

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

Nu tittar vi längre ner i koden på fältet reducers för productsSlice. Tidigare lade vi till en ny produkt med hjälp av reducern productAdded, där vi hade metoderna reducer och prepare. Nu genererar vi nödvändig data på servern och arbetar med thunk, så vi tar helt bort reducern productAdded från koden här. Sedan lägger vi till i metoden extraReducers (i slutet av dess kod) ytterligare en extra reducer, som vid en lyckad förfrågan kommer att lägga till i slicen products den nya produkten direkt från payload i actionen (kom ihåg att sådan kod är möjlig tack vare den oförlikneliga createSlice):

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

Ja, förresten, glöm inte att ta bort nanoid från importraderna, och productAdded från exporten av actions i slutet av filen.

Öppna din studentapplikation. Öppna filen studentsSlice.js i den. Skapa med hjälp av createAsyncThunk ytterligare en thunk addStudent, som kommer att skicka en POST-förfrågan till servern för att lägga till en ny student, som visas i lektionen.

Gör sedan ändringar längre ner för studentsSlice: ta bort reducern studentAdded helt i egenskapen reducers. Och i fältet extraReducers lägg till en extra reducer, som kommer att lägga till den nya studenten i slicen students från payload i actionen vid en lyckad förfrågan, som visas i lektionen.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa