⊗jsrxPmRDPAD 26 of 57 menu

Kuandaa Data kwa Kitu cha Action katika Redux

Hivi karibuni tulizungumza nawe kuhusu kitendakazi createSlice kinachotarajiwa hoja moja wakati wa kuunda action.payload. Kwa upande mmoja hurahisisha matumizi yake, kwa upande mwingine inaweza kuhitaji harakati za ziada kwa ajili ya kuandaa yaliyomo katika kitu cha action.

Wacha tufungue programu yetu yenye bidhaa, na ndani yake faili NewProductForm.jsx. Zingatia mstari wa kifuatacho cha kodi:

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

Hapa tunakusanya kitu payload mozimozi kwenye kijenzi cha React na tukikipitisha kwenye kitendo productAdded. Je, ni nini ikiwa tutalazimika kutuma kitendo kama hicho kutoka kwenye vijenzi kadhaa au mantiki ya kusanyiko ikawa ngumu? Kwa maana kijenzi chetu hakipaswi kujali jinsi inavyoonekana kitu katika payload kwa kitendo hiki. Zaidi ya hayo hatukubaliani na kurudia kodi mara kwa mara.

Matatizo haya yanaweza kutusaidia tena kutatua createSlice yetu maarufu, kwani wakati wa kuandika reducer inaturuhusu kutumia kitendakazi cha mwito-nyuma prepare, ambacho ndani yake tunaweza kuandika mantiki mbalimbali, kutengeneza namba nasibu na kadhalika. Kwa kesi hiyo thamani ya uga wa reducer inaweza kuwakilishwa kwa muundo wa kitu kifuatacho:

{reducer, prepare}

Wacha tufungue faili yetu productsSlice.js na tubadilishe kodi kwa reducer productAdded. Sasa kipande hiki cha kodi:

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

Tutabadilisha kuwa ifuatayo, ambayo kitendakazi reducer kitashughulikia kusasisha hali katika duka, na prepare - kurudisha kitu payload kilicho na id iliyotengenezwa na zetu data zingine:

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

Kwa kuwa sasa tutatengeneza id hapa, na si kwenye kijenzi, wacha tuongeze nanoid kwenye usafirishaji:

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

Mwisho tuingize mabadiliko kwenye NewProductForm.jsx. Badala ya mstari:

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

Tutakuwa na hii, ambayo sisi tu kupitia koma tunapitisa data tuliyohitaji (usisahau kwenye faili hii kuondoa nanoid kwenye usafirishaji):

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

Wacha tuizindue programu yetu, kisha tuunde bidhaa mpya na tuhakikishe kuwa hatujuvunja kitu chochote.

Fungua programu yako yenye wanafunzi. Kwenye faili StudentsSlice.js andika upya reducer yako studentAdded kwa njia kwamba iwe kwa muundo wa kitu {reducer, prepare}, kama inavyoonyeshwa kwenye somo.

Ingiza mabadiliko yanayofaa kwenye faili NewStudentForm.jsx, kama inavyoonyeshwa kwenye somo. Zindua programu na uhakikishe kwamba kila kitu kinafanya kazi kama zamani.

Kiswahili
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Tunatumia kuki kwa ajili ya uendeshaji wa tovuti, uchambuzi na ubinafsishaji. Usindikaji wa data unafanyika kulingana na Sera ya Faragha.
kubali yote sanidi kataa