⊗jsrxPmATDT 54 of 57 menu

Datu sūtīšana, izmantojot thunk Redux

Iepriekšējā nodarbībā mēs apskatījām POST pieprasījuma apstrādi mūsu viltus serverī. Tagad uzrakstīsim thunk-funkciju, kas sūtīs pieprasījumu uz serveri.

Atvērsim mūsu lietotni ar produktiem, un tajā failu productsSlice.js. Tagad pēc thunk fetchProducts mēs ar createAsyncThunk palīdzību izveidosim thunk addProduct:

export const addProduct = createAsyncThunk()

Kā pirmo parametru mēs padodam createAsyncThunk 'products/addProduct', bet kā otro - asinhronu atgriezenisko izsaukumu, kas pieņems objektu ar jaunā produkta datiem:

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

Šī atgriezeniskā izsaukuma kodā mēs izsauksim klientu, padodot tam parametrus - ceļu un objektu ar produktu, un pēc tam atgriezīsim atbildes datus:

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

Tagad zemāk kodā apskatīsim lauku reducers priekš productsSlice. Iepriekš mēs pievienojām jaunu produktu, izmantojot reduceri productAdded, kurā mums bija metodes reducer un prepare. Tagad mēs ģenerējam nepieciešamos datus serverī un strādājam ar thunk, tāpēc noņemsim šeit pilnībā reduceri productAdded no koda. Un pēc tam ievietosim metodē extraReducers (tā koda beigās) vēl vienu papildu reduceri, kas veiksmīga pieprasījuma gadījumā pievienos slīceņā products jaunu produktu tieši no payload action (atceramies, ka šāds kods ir iespējams tikai pateicoties unikālajam createSlice):

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

Jā, starp citu, neaizmirstiet noņemt nanoid no importa rindām, un productAdded no eksporta action faila beigās.

Atveriet savu lietotni ar studentiem. Atveriet tajā failu studentsSlice.js. Ar createAsyncThunk palīdzību izveidojiet vēl vienu thunk addStudent, kas sūtīs POST pieprasījumu uz serveri, lai pievienotu jaunu studentu, kā parādīts nodarbībā.

Tālāk zemāk veiciet izmaiņas priekš studentsSlice: noņemiet pilnībā reduceri studentAdded īpašumā reducers. Bet laukā extraReducers pievienojiet papildu reduceri, kas pievienos jaunu studentu slīceņā students no payload action veiksmīga pieprasījuma gadījumā, kā parādīts nodarbībā.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt