⊗jsrxPmATDT 54 of 57 menu

Trimiterea datelor folosind thunk în Redux

În lecția precedentă, am analizat procesarea unei cereri POST pe serverul nostru fals. Să scriem acum o funcție thunk care va trimite cererea către server.

Să deschidem aplicația noastră cu produse, iar în ea fișierul productsSlice.js. Acum, după thunk-ul fetchProducts, cu ajutorul createAsyncThunk vom crea thunk-ul addProduct:

export const addProduct = createAsyncThunk()

Ca prim parametru, vom transmite către createAsyncThunk 'products/addProduct', iar ca al doilea, un callback asincron care va primi un obiect cu datele noului produs:

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

În codul acestui callback, vom apela clientul, transmițându-i ca parametri calea și obiectul cu produsul, apoi vom returna datele răspunsului:

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

Acum, mai jos în cod, să ne uităm la câmpul reducers pentru productsSlice. Anterior, adăugam un nou produs folosind reducer-ul productAdded, în care aveam metodele reducer și prepare. Acum generăm datele necesare pe server și lucrăm cu thunk, așa că vom elimina complet de aici reducer-ul productAdded din cod. Apoi vom adăuga în metoda extraReducers (la sfârșitul codului său) încă un reducer suplimentar, care în cazul unei cereri de succes va adăuga în slice-ul products noul produs direct din payload acțiunii (ținem minte că un astfel de cod este posibil datorită unicului createSlice):

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

Da, apropo, nu uitați să eliminați nanoid din liniile de import, iar productAdded din exportul acțiunilor la sfârșitul fișierului.

Deschideți aplicația voastră cu studenți. Deschideți în ea fișierul studentsSlice.js. Cu ajutorul createAsyncThunk creați încă un thunk addStudent, care va trimite o cerere POST către server, pentru a adăuga un nou student, așa cum este arătat în lecție.

Apoi, mai jos, faceți modificări pentru studentsSlice: eliminați complet reducer-ul studentAdded din proprietatea reducers. Iar în câmpul extraReducers adăugați un reducer suplimentar, care va adăuga un nou student în slice-ul students din payload acțiunii în cazul unei cereri de succes, așa cum este arătat în lecție.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge