⊗jsrxPmWFDA 18 of 57 menu

Redux-те action жіберу және useDispatch хукі

Біз Redux қолданушысының жұмысы үшін барлық қажетті құрамдастарды іс жүзінде жүзеге асырдық. Тек React компонентінен action жіберу қалды. Бастайық.

Өнімдерімізбен жұмыс істейтін қолданушыны ашыңыз. NewProductForm компонентінің пішінінде бізде жаңа өнім деректерін сақтау үшін батырма бар. Оған басу кезінде іске қосылатын өңдегішті қосайық. Оған басқанда onSaveProductClick өңдегіші іске қосылады:

<button type="button" onClick={onSaveProductClick}> save </button>

Жаңа өнімді жасау кезінде бізге ол үшін жаңа id қажет болады. Біз оны әлемге әйгілі nanoid кітапханасының көмегімен жасаймыз. Айтпақшы, оны орнатудың қажеті жоқ, себебі ол RTK пакетімен бірге келеді. Nanoid-ті импортқа қосамыз:

import { nanoid } from '@reduxjs/toolkit'

Сондай-ақ біз state-ті өзгертудің жалғыз тәсілі - бұл store-да бар dispatch әдісін шақырып, action нысанын беру екенін білеміз. Бұл әдіске қол жеткізу үшін біз React-Redux useDispatch хукін қолданамыз. Оны да импорттайық:

import { useDispatch } from 'react-redux'

NewProductForm функциясының кодында ол үшін жергілікті state-тер үшін константаларды құрғаннан кейін бірден dispatch константасын құрамыз:

const dispatch = useDispatch()

Сондай-ақ бізге алдыңғы сабақта алған action creator productAdded импорттау керек:

import { productAdded } from './productsSlice'

Енді біз onSaveProductClick өңдегіш функциясының өзін жаза аламыз. Мұны return командасының алдында орындаймыз:

const onSaveProductClick = () => {}

Функция ішінде біз dispatch шақырамыз, action нысанын құрамыз, оның payload қасиетіне жасалған id, атауы, сипаттамасы, бағасы және өнім саны енеді. Бұл деректердің барлығын біз жергілікті state-терден аламыз. Сонымен бірге басында біз шартта барлық өрістер толтырылған ба - тек осы жағдайда dispatch шақырамыз. Функция кодының соңында біз жергілікті state-терді бастапқы күйіне қайтарамыз:

const onSaveProductClick = () => { if (name && desc && price && amount) { dispatch( productAdded({ id: nanoid(), name, desc, price, amount }) ) setName('') setDesc('') setPrice(0) setAmount(0) } }

Енді қолданушымызды іске қосамыз, пішін өрістеріне деректерді енгіземіз және сақтау батырмасын басамыз. Ура, парақшаның төменгі жағында жаңа өнім пайда болды. Redux DevTools-ты ашып, ондағы Inspector қойындысын ашсақ, сол жағында @@INIT-тен басқа біздің products/productAdded action-іміз пайда болғанын көреміз. Ал оң жақ бөлігінде біз Action және State қойындыларын басу арқылы @@INIT пен products/productAdded арасында ауыса аламыз. Енді біз жаңа өніміміздің қосылатынын көреміз. Сондай-ақ Action қойындысында біз createSlice көмегімен автоматты түрде жасалған action-ді көреміз (мысалы, Raw түймесін басыңыз). Ура: оны қолмен жазуға тура келмеді.

Студенттеріңізбен жұмыс істейтін қолданушыны, содан кейін NewStudentForm.jsx файлын ашыңыз, сақтау батырмасына басу өңдегішін қосыңыз.

Барлық қажетті импорттарды жазыңыз және сабақта көрсетілгендей dispatch әдісін қолданып, onSaveStudentClick өңдегіш функциясын жазыңыз.

Қолданушыны іске қосыңыз, пішін өрістеріне деректерді енгізіп, сақтау батырмасын басыңыз. Парақшаның төменгі жағында жаңа студент қосылғанына көз жеткізіңіз.

Redux DevTools-ты ашып, Action және State қойындылары арқылы өтіңіз, жаңа студент нысанының қосылғанына көз жеткізіңіз. Сізде пайда болған action нысанына қарап, осы тапсырмаға жауап ретінде жіберіңіз.

Қазақ
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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау