⊗jsrxPmRDPAD 26 of 57 menu

Përgatitja e të Dhënave për Objektin action në Redux

Kohët e fundit kemi biseduar për faktin se funksioni createSlice pret një argument gjatë krijimit të action.payload. Nga njëra anë kjo thjeshton përdorimin e saj, nga ana tjetër mund të kërkojë lëvizje shtesë për përgatitjen e përmbajtjes së objektit action.

Le të hapim aplikacionin tonë me produktet, dhe në të skedarin NewProductForm.jsx. Kushtojini vëmendje rreshtit të mëposhtëm të kodit:

dispatch(productAdded({ id: nanoid(), name, desc, price, amount }))

Këtu ne po mbledhim objektin payload drejtpërdrejt në komponentin React dhe po e kalojmë atë në action productAdded. Po sikur të na duhet të dërgojmë të njëjtin action nga disa komponentë ose logjika për mbledhjen të rezultojë e ndërlikuar? Në parim, komponentit tonë nuk duhet t'i interesojë se si duket objekti në payload për këtë action. Përveç kësaj, nuk na përshtatet duplikimi i vazhdueshëm i kodit.

Këto probleme përsëri mund të na ndihmojë t'i zgjidhë i famshmi ynë createSlice, pasi që gjatë shkrimit të reduktorit ai na lejon të përdorim funksionin callback prepare, në të cilin mund të shkruajmë logjikë të ndryshme, të gjenerojmë numra të rastësishëm dhe të tjera. Në këtë rast vlera për fushën e reduktorit mund të paraqitet në formën e objektit të mëposhtëm:

{reducer, prepare}

Le të hapim skedarin tonë productsSlice.js dhe të ndryshojmë kodin për reduktorin productAdded. Tani ky pjesë e kodit:

productAdded(state, action) { state.push(action.payload) },

Do ta ndryshojmë në këtë, ku funksioni reducer do të merret me përditësimin e state në store, dhe prepare - do të kthejë objektin payload me id-në e gjeneruar dhe të dhënat tona të tjera:

productAdded: { reducer(state, action) { state.push(action.payload) }, prepare(name, desc, price, amount) { return { payload: { id: nanoid(), name, desc, price, amount, }, } }, },

Meqenëse tani do të gjenerojmë id këtu, dhe jo në komponent, le të shtojmë nanoid në import:

import { createSlice, nanoid } from '@reduxjs/toolkit'

Së fundi, le të bëjmë ndryshimet në NewProductForm.jsx. Në vend të rreshtit:

dispatch(productAdded({ id: nanoid(), name, desc, price, amount }))

Do të kemi këtë, ku ne thjesht përmes presjeve do t'ia kalojmë të dhënat e nevojshme (mos harroni në këtë skedar të hiqni nanoid nga importi):

dispatch(productAdded(name, desc, price, amount))

Le të startojmë aplikacionin, pastaj të krijojmë një produkt të ri dhe të sigurohemi që nuk kemi prishur asgjë.

Hapni aplikacionin tuaj me studentët. Në skedarin StudentsSlice.js rishkruani reduktorin tuaj studentAdded në mënyrë të tillë, që ai të jetë në formën e objektit {reducer, prepare}, siç tregohet në mësim.

Bëni ndryshimet përkatëse në skedarin NewStudentForm.jsx, siç tregohet në mësim. Startoni aplikacionin dhe sigurohuni që gjithçka funksionon si më parë.

Shqip
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ne përdorim cookie për funksionimin e sajtit, analizën dhe personalizimin. Përpunimi i të dhënave bëhet në përputhje me Politikën e Privatësisë.
prano të gjitha konfiguro refuzo