⊗jsrxPmRDPAD 26 of 57 menu

Маълумотро барои объекти action дар Redux омода кардан

Чанде пеш мо бо шумо дар бораи он суҳбат кардем, ки функсияи createSlice як аргументро дар вақти сохтани action.payload интизор аст. Аз як тараф ин истифодаи онро осон мекунад, аз тарафи дигар метавонад талабҳои иловагиро барои омодакунии муҳтавои объекти action тақозо намояд.

Биёед барномаи худро бо маҳсулот кушода, дар он файли NewProductForm.jsx. Ба сатри зерини рамз диққат диҳед:

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

Дар ин ҷо мо payload объектро рост дар компоненти React ҷамъ оварда, онро ба action-и productAdded мефиристем. Вале агар мо бояд чунин action-ро аз якчанд компонент фиристем ё мантиқ барои ҷамъоварӣ мураккаб шавад? Дар асос, компоненти мо набояд фарқ кунад, ки объект дар payload барои ин action чӣ хел аст. Ҳамзамон, такрори доимии рамз моро розӣ намекунад.

Ин мушкилиҳоро бори дигар метавонад ба мо кӯмак расонад, ки маъруфи createSlice, зеро дар навиштани редюсер он ба мо имкон медиҳад, ки функсияи callback-ро prepare истифода барем, ки дар он метавон мантиқи гуногунро навишт, рақамҳои тасодуфиро ҳосил кард ва ғайра. Дар ин ҳолат қимат барои майдони редюсер метавонад ба сурати объекти зерин муаррифӣ шавад:

{reducer, prepare}

Биёед файли худро productsSlice.js кушода ва рамзро барои редюсери productAdded тағир диҳем. Акнун ин порчаи рамз:

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

Мо ба зерини он иваз мекунем, ки дар он функсияи reducer вазифадор аст ба навсозии стейт дар store, ва prepare - объекти payload-ро бо id-и ҳосилшуда ва дигар маълумоти мо баргардонад:

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

Азбаски акнун мо id-ро дар инҷо ҳосил мекунем, на дар компонент, биёед nanoid-ро ба воридот илова кунем:

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

Дар охир тағирот дар NewProductForm.jsx ворид мекунем. Ба ҷои сатр:

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

Мо чунин хоҳем дошт, ки дар он мо танҳо тавассути вергул маълумоти заруриро фиристем (дар ин файл фаромӯш накунед, ки nanoid аз воридот тоза кунед):

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

Барномаро оғоз кунем, сипас як навъ маҳсулот сохта ва боварӣ ҳосил кунем, ки мо чизеро нашикастем.

Барномаи худро бо донишҷӯён кушоед. Дар файли StudentsSlice.js редюсери худро studentAdded ба тавре нависед, ки ба сурати объекти {reducer, prepare} бошад, чунонки дар дарс нишон дода шуд.

Тағироти мувофикро дар файли NewStudentForm.jsx ворид кунед, чунонки дар дарс нишон дода шуд. Барномаро оғоз кунед ва боварӣ ҳосил кунед, ки ҳама чиз ҳамон тавре кор мекунад, ки пеш.

Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан