⊗jsrxPmATDT 54 of 57 menu

Sending av data med thunk i Redux

I forrige leksjon gikk vi gjennom behandlingen av en POST-forespørsel til vår falske server. La oss nå skrive en thunk-funksjon som vil sende en forespørsel til serveren.

La oss åpne applikasjonen vår med produkter, og i den filen productsSlice.js. Nå, etter thunk fetchProducts, skal vi ved hjelp av createAsyncThunk opprette en thunk addProduct:

export const addProduct = createAsyncThunk()

Som første parameter vil vi sende til createAsyncThunk 'products/addProduct', og som andre en asynkron callback, som vil ta imot et objekt med data for det nye produktet:

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

I koden til denne callbacken vil vi kalle klienten, sende den banen og objektet med produktet som parametere, og deretter returnere svardataene:

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

La oss nå se nedenfor i koden på feltet reducers for productsSlice. Tidligere la vi til et nytt produkt ved hjelp av reduceren productAdded, der vi hadde metodene reducer og prepare. Nå genererer vi nødvendige data på serveren og jobber med thunk, så vi vil fullstendig fjerne reduceren productAdded fra koden her. Deretter legger vi til i metoden extraReducers (på slutten av koden) en ny ekstra reducer, som i tilfelle en vellykket forespørsel vil legge til i slicen products et nytt produkt direkte fra payload av actionen (husk at slik kode er mulig kun takket være den enestående createSlice):

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

Ja, forresten, ikke glem å fjerne nanoid fra import-setningene, og productAdded fra eksporten av actions på slutten av filen.

Åpne applikasjonen din med studenter. Åpne filen studentsSlice.js i den. Ved hjelp av createAsyncThunk, opprett en ny thunk addStudent, som vil sende en POST-forespørsel til serveren for å legge til en ny student, som vist i leksjonen.

Deretter, gjør endringer nedenfor for studentsSlice: fjern fullstendig reduceren studentAdded i egenskapen reducers. Og i feltet extraReducers, legg til en ekstra reducer, som vil legge til en ny student i slicen students fra payload av actionen i tilfelle en vellykket forespørsel, som vist i leksjonen.

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