⊗jsrxPmATDT 54 of 57 menu

Sending data using thunk in Redux

I den sidste lektion dækkede vi håndteringen af en POST-forespørgsel til vores falske server. Lad os nu skrive en thunk-funktion, som vil sende forespørgslen til serveren.

Lad os åbne vores produktapplikation, og i den filen productsSlice.js. Nu efter thunken fetchProducts vil vi ved hjælp af createAsyncThunk oprette en thunk addProduct:

export const addProduct = createAsyncThunk()

Som den første parameter vil vi sende til createAsyncThunk 'products/addProduct', og som den anden en asynkron callback, som vil modtage et objekt med data for det nye produkt:

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

I koden for denne callback vil vi kalde klienten, passe den stien og objektet med produktet som parametre, og derefter returnere svardataene:

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

Lad os nu længere nede i koden kigge på feltet reducers for productsSlice. Tidligere tilføjede vi et nyt produkt ved hjælp af reduceren productAdded, hvor vi havde metoderne reducer og prepare. Nu genererer vi de nødvendige data på serveren og arbejder med thunk, så vi vil helt fjerne reduceren productAdded fra koden her. Og derefter tilføje i metoden extraReducers (i slutningen af dens kode) endnu en ekstra reducer, som i tilfælde af en succesfuld forespørgsel vil tilføje til slicen products det nye produkt direkte fra payload af actionen (husk, at sådan kode kun er mulig takket være den unikke createSlice):

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

Ja, forresten, glem ikke at fjerne nanoid fra importlinjerne, og productAdded fra eksporten af actions i slutningen af filen.

Åbn din applikation med studerende. Åbn filen studentsSlice.js i den. Ved hjælp af createAsyncThunk, opret endnu en thunk addStudent, som vil sende en POST-forespørgsel til serveren for at tilføje en ny studerende, som vist i lektionen.

Herefter længere nede, foretag ændringer for studentsSlice: fjern helt reduceren studentAdded i egenskaben reducers. Og i feltet extraReducers tilføj en ekstra reducer, som vil tilføje den nye studerende til slicen students fra payload af actionen i tilfælde af en succesfuld forespørgsel, som vist i lektionen.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis