⊗jsrxPmWFDA 18 of 57 menu

Action-ի ուղարկում և useDispatch hook-ը Redux-ում

Մենք գործնականում իրականացրել ենք Redux հավելվածի աշխատանքի համար անհրաժեշտ բոլոր բաղադրիչները։ Մնացել է միայն հասկանալ, թե ինչպես React կոմպոնենտից ուղարկել action: Եկեք սկսենք։

Բացեք մեր ապրանքներով հավելվածը։ NewProductForm կոմպոնենտի ֆորմայում մենք ունենք նոր ապրանքի տվյալները պահպանելու կոճակ։ Եկեք դրան ավելացնենք կլիկի դիտարկիչ։ Թող կոճակի վրա կլիկի դեպքում աշխատի onSaveProductClick դիտարկիչը։

<button type="button" onClick={onSaveProductClick}> պահպանել </button>

Նոր ապրանք ստեղծելիս մեզ անհրաժեշտ կլինի նոր id դրա համար։ Մենք այն կգեներացնենք բոլորին հայտնի nanoid գրադարանի օգնությամբ։ Ի դեպ, այն պետք չէ տեղադրել, քանի որ այն արդեն գալիս է RTK փաթեթի հետ։ Եկեք ավելացնենք nanoid իմպորտում։

import { nanoid } from '@reduxjs/toolkit'

Մենք նաև հիշում ենք, որ state-ը փոխելու միակ եղանակը dispatch մեթոդը կանչելն է, որը կա store-ում և փոխանցել action օբյեկտը։ Այս մեթոդին հասնելու համար մենք կկիրառենք React-Redux useDispatch hook-ը։ Եկեք իմպորտենք այն։

import { useDispatch } from 'react-redux'

NewProductForm ֆունկցիայի կոդում ստեղծենք դրա համար dispatch հաստատունը հենց այն բանից հետո, երբ մենք ստեղծել ենք հաստատուններ մեր լոկալ state-ների համար։

const dispatch = useDispatch()

Մեզ նաև անհրաժեշտ է իմպորտել productAdded action creator-ը, որը մենք ստացել ենք նախորդ դասին։

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-ից բացի հայտնվել է նաև մեր action-ը products/productAdded։ Իսկ աջ մասում մենք կարող ենք սեղմել Action և State ներդիրների վրա, միաժամանակ փոխելով @@INIT-ը և products/productAdded-ը։ Այժմ մենք տեսնում ենք, որ մեր նոր ապրանքը ավելանում է։ Նաև Action ներդիրում մենք տեսնում ենք action, որը գեներացվել է ավտոմատ createSlice-ի օգնությամբ (սեղմեք, օրինակ, Raw-ի վրա)։ Ուռա՝ մենք ստիպված չէինք այն գրել ձեռքով։

Բացեք ձեր ուսանողներով հավելվածը, ապա NewStudentForm.jsx ֆայլը, ավելացրեք պահպանելու կոճակին կլիկի դիտարկիչ։

Գրեք բոլոր անհրաժեշտ իմպորտները և գրեք onSaveStudentClick դիտարկիչ ֆունկցիան, կիրառելով dispatch մեթոդը, ինչպես ցուցադրված է դասում։

Գործարկեք հավելվածը, մուտքագրեք ֆորմայի դաշտերում տվյալներ և սեղմեք պահպանելու կոճակի վրա։ Համոզվեք, որ էջի ներքևի մասում ավելացավ նոր ուսանող։

Բացեք Redux DevTools և անցեք Action և State ներդիրներով, համոզվեք, որ նոր օբյեկտը ուսանողով ավելանում է։ Նայեք ձեր գեներացված action օբյեկտին և ուղարկեք այն այս առաջադրանքի պատասխանում։

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել