⊗jsrxPmATDT 54 of 57 menu

Odosielanie dát pomocou thunk v Reduxe

Na minulej hodine sme preberali spracovanie POST požiadavky na našom falošnom serveri. Poďme teraz napísať thunk funkciu, ktorá bude odosielať požiadavku na server.

Otvorme našu aplikáciu s produktmi a v nej súbor productsSlice.js. Teraz po thunk fetchProducts pomocou createAsyncThunk vytvoríme thunk addProduct:

export const addProduct = createAsyncThunk()

Prvým parametrom odovzdáme do createAsyncThunk 'products/addProduct' a druhým asynchrónny callback, ktorý bude prijímať objekt s údajmi nového produktu:

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

V kóde tohto callbacku zavoláme klienta, odovzdáme mu parametre cestu a objekt s produktom a potom vrátime údaje odpovede:

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

Teraz nižšie v kóde sa pozrieme na pole reducers pre productsSlice. Predtým sme pridávali nový produkt pomocou redukora productAdded, v ktorom sme mali metódy reducer a prepare. Teraz generujeme potrebné údaje na serveri a pracujeme s thunk, preto tu úplne odstránime reduktor productAdded z kódu. Potom pridáme do metódy extraReducers (na koniec jej kódu) ešte jeden dodatočný reduktor, ktorý v prípade úspešnej požiadavky pridá do slice products nový produkt priamo z payload akcie (pamätáme, že takýto kód je možný len vďaka jedinečnému createSlice):

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

Áno, mimochodom, nezabudnite odstrániť nanoid z riadkov s importom a productAdded z exportu akcií na konci súboru.

Otvorte vašu aplikáciu so študentmi. Otvorte v nej súbor studentsSlice.js. Pomocou createAsyncThunk vytvorte ešte jeden thunk addStudent, ktorý bude odosielať POST požiadavku na server, aby pridal nového študenta, ako je ukázané v lekcii.

Ďalej nižšie vykonajte zmeny pre studentsSlice: úplne odstráňte reduktor studentAdded vo vlastnosti reducers. A do poľa extraReducers pridajte dodatočný reduktor, ktorý bude pridávať nového študenta do slice students z payload akcie v prípade úspešnej požiadavky, ako je ukázané v lekcii.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť