⊗jsrxPmATDT 54 of 57 menu

Slanje podataka pomoću thunk-a u Redux-u

Na prošlom času smo razgovarali o obradi POST zahteva na našem lažnom serveru. Hajde sada da napišemo thunk-funkciju koja će slati zahtev serveru.

Otvorimo našu aplikaciju sa proizvodima, a u niej datoteku productsSlice.js. Sada posle thunk-a fetchProducts ćemo uz pomoć createAsyncThunk kreirati thunk addProduct:

export const addProduct = createAsyncThunk()

Kao prvi parametar ćemo proslediti u createAsyncThunk 'products/addProduct', a kao drugi asinhroni callback, koji će prihvatati objekat sa podacima novog proizvoda:

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

U kodu ovog callback-a pozvaćemo klijenta, prosledivši mu kao parametre putanju i objekat sa proizvodom, a zatim vratiti podatke odgovora:

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

Sada ispod u kodu pogledajmo polje reducers za productsSlice. Ranije smo dodavali novi proizvod pomoću reducer-a productAdded, u kojem smo imali metode reducer i prepare. Sada mi generišemo potrebne podatke na serveru i radimo sa thunk-om, zato ćemo ovde u potpunosti ukloniti reducer productAdded iz koda. A zatim uneti u metod extraReducers (na kraj njegovog koda) još jedan dodatni reducer, koji u slučaju uspešnog zahteva dodaje u slice products novi proizvod direktno iz payload akcije (sećamo se, da je ovakav kod moguć samo zahvaljujući jedinstvenom createSlice):

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

Da, usput, ne zaboravite da uklonite nanoid iz linija sa import-om, a productAdded iz eksporta akcija na kraju datoteke.

Otvorite vašu aplikaciju sa studentima. Otvorite u njoj datoteku studentsSlice.js. Uz pomoć createAsyncThunk kreirajte još jedan thunk addStudent, koji će slati POST zahtev serveru, kako bi dodao novog studenta, kao što je prikazano na času.

Zatim ispod unesite izmene za studentsSlice: u potpunosti uklonite reducer studentAdded u svojstvu reducers. A u polju extraReducers dodajte dodatni reducer, koji će dodavati novog studenta u slice students iz payload akcije u slučaju uspešnog zahteva, kao što je prikazano na času.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij