⊗jsrxPmRDPAD 26 of 57 menu

Redux-daky action obyekti üçin maglumatlary taýýarlamak

Ýakynda siz bilen createSlice funksiýasynyň action.payload döredilende bir argument garaýandygyny gürleşdik. Bir tarapdan bu onuň ulanylyşyny ýönekeýleşdirýär, beýleki tarapdan bolsa action obyektiniň mazmunyny taýýarlamak üçin goşmaça hereketler talap edip biler.

Geliň önümler bar bolan programmyzy açalyň, we onuň içindäki NewProductForm.jsx faýlyna geçeliň. Aşakdaky kod setirine üns beriň:

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

Bu ýerde biz payload obyektini derrew React komponentinde ýygnaýarys we ony productAdded aksiýasyna geçirýäris. Emma birnäçe komponentden şonuň ýaly aksiýa ibermeli bolup galýan bolsa ýa-da ýygnaýyş logikamyz kyn bolsa näme etmeli? Ideýa taýdan, komponentimiz bu action üçin payload-da näme ýerleşýändigi bilen alakah bolmaly däldir. Mundan başga-da, kody yzygiderlik gaýtalamak bizi kanagatlandyrmaýar.

Bu meseläni ýene-de ataýyňly createSlice çözüp biler, sebäbi reducer ýazýanymyzda oňa prepare kallback-funksiýasyny ulanmaga rugsat berýär, onda dürli logikalar ýazyp, tötänleýin sanlar döredip we ş.m. ýerine ýetirip bolýar. Bu ýagdaýda reducer meýdany üçin baha aşakdaky ýaly obyekt şeklinde görkezilip bilner:

{reducer, prepare}

Geliň productsSlice.js faýlymyzy açalyň we productAdded reducer üçin kody üýtgedeliň. Indi bu kod bölegi:

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

Biz ony aşakdaky bilen çalyşarys, ýöne reducer funksiýasy store-daky ýagdaýy täzelemek bilen meşgullanjak, prepare bolsa - döredilen id we beýleki maglumatlarymyz bilen payload obyektini yzyna gaýtarmaly:

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

Indi biz id-ni komponentde däl-de, bu ýerde döredýändigimiz üçin, geliň nanoid-i importa goşalyň:

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

Soňky üýtgeşmäni NewProductForm.jsx faýlyna edeliň. Şu setiriň ýerine:

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

Bizde bu bolup galar, onda biz diňe zerur bolan maglumatlarymyzy vergül bilen geçirýäris (bu faýlda importdan nanoid-i aýyrmagy ýatdan çykarmaň):

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

Programmany işledeliň, soňra täze önüm döredeliň we hiç zatymyzyň bozulmandygyna göz ýetireliň.

Talyp bar bolan programmyzy açyň. StudentsSlice.js faýlynda studentAdded reducer-iňizi sapakda görkezilişi ýaly {reducer, prepare} obyekti şeklinde ýazyň.

Sapakda görkezilişi ýaly, NewStudentForm.jsx faýlyna degişli üýtgeşmeleri giriziň. Programmany işlediň we öňki ýaly işleýändigine göz ýetiriň.

Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et