⊗jsrxPmWFRAA 17 of 57 menu

Reduxi redutseerija ja action

Eelmisel tunnil lõpetasime toote lisamise vormi ja lisasime selle pealehele. Kuid praegu lisatud andmeid ei salvestata, teisisõnu uut toodet ei lisata olemasolevatele poes. Parandame selle.

Alustuseks avame oma tooterakenduses faili productsSlice.jsx ja kirjutame omadusse reducer funktsiooni createSlice jaoks funktsiooni productAdded, mis hoolitseb toode lisamise eest poodi, lähtudes talle edastatud praegusest olekust ja tegevusest. Tuleb märkida, et siin ei edastata meile kogu olekut, vaid ainult see osa, mis vastutab toodete eest (lõik products teab ainult sellest). Uue tootega objekt asub omaduses payload objekti action, mida genereeritakse vormi salvestusnupu vajutamise käsitleja poolt. Tulemusena näeb redutseerija productAdded välja koodis createSlice nii:

const productsSlice = createSlice({ name: 'products', initialState, reducers: { productAdded(state, action) { state.push(action.payload) }, }, })

Aga tegevus? Õpiku alguses me mainisime, et tegevus on mingi sündmus, mis on esitatud objektina, kirjeldades seda, mis rakenduses juhtus. Rääkisime ka sellest, et saab kasutada tegevuse looja funktsiooni, mis loob meile sellise objekti, näiteks nii:

const addProduct = newProduct => { return { type: 'products/productAdded', payload: newProduct } }

Hea uudis on see, et meil ei pea midagi tegema, sest selle teeb meie eest funktsioon createSlice, mida me kasutame. Niipea kui oleme kirjutanud redutseerija, loob see automaatselt meie jaoks tegevuse looja sama nimega. Meil jääb üle ainult eksportida saadud tegevuse looja edasiseks kasutamiseks komponentides. Teeme selle faili lõpus enne redutseerija eksportimist, nii:

export const { productAdded } = productsSlice.actions export default productsSlice.reducer

Avage oma õpilaste rakendus, seejärel fail studentsSlice.jsx, lisage välja reducer väärtus jaoks createSlice, nagu on näidatud tunnis.

Lisage faili studentsSlice.jsx lõppu saadud tegevuse looja funktsiooni eksport.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu