⊗jsrxPmWFDA 18 of 57 menu

Trimiterea acțiunilor și hook-ul useDispatch în Redux

Am implementat aproape toate componentele necesare pentru funcționarea unei aplicații Redux. Rămâne doar să înțelegem cum să trimitem o acțiune dintr-un component React. Să începem.

Deschideți aplicația noastră cu produse. În forma componentului NewProductForm avem un buton pentru salvarea datelor noului produs. Să adăugăm un handler pentru click. Să declanșăm handler-ul onSaveProductClick la click pe el:

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

Pentru crearea unui produs nou, vom avea nevoie de un nou id. Îl vom genera folosind binecunoscuta bibliotecă nanoid. Apropo, nu trebuie să o instalați, deoarece deja este inclusă în pachetul RTK. Să adăugăm nanoid în import:

import { nanoid } from '@reduxjs/toolkit'

De asemenea, ne amintim că singura modalitate de a modifica state-ul este să apelăm metoda dispatch, care este disponibilă în store și să îi transmitem un obiect action. Pentru a accesa această metodă, vom folosi hook-ul React-Redux useDispatch. Să îl importăm:

import { useDispatch } from 'react-redux'

În codul funcției NewProductForm, să definim o constantă dispatch imediat după ce am definit constantele pentru state-urile noastre locale:

const dispatch = useDispatch()

De asemenea, trebuie să importăm action creator-ul productAdded, pe care l-am obținut în lecția precedentă:

import { productAdded } from './productsSlice'

Acum putem scrie funcția handler onSaveProductClick. Să o facem înainte de comanda return:

const onSaveProductClick = () => {}

În interiorul funcției, apelăm dispatch, formăm obiectul action, în proprietatea payload al căruia vor intra id-ul generat, numele, descrierea, prețul și cantitatea produsului. Toate aceste date le luăm din state-urile locale. În același timp, la început verificăm într-o condiție dacă toate câmpurile sunt completate - doar în acest caz apelăm dispatch. La sfârșitul codului funcției, returnăm state-urile locale la starea inițială:

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

Acum să pornim aplicația, să introducem date în câmpurile formularului și să apăsăm butonul de salvare. Ura, în partea de jos a paginii a apărut un produs nou. Deschizând Redux DevTools, și în el fila Inspector, vedem că în stânga în afară de @@INIT a apărut și acțiunea noastră products/productAdded. În partea dreaptă putem da click pe filele Action și State, comutând între @@INIT și products/productAdded. Acum vedem că noul nostru produs se adaugă. De asemenea, în fila Action vedem acțiunea, generată automat cu createSlice (dați click, de exemplu, pe Raw). Ura: nu a trebuit să o scriem manual.

Deschideți aplicația voastră cu studenți, apoi fișierul NewStudentForm.jsx, atașați butonului de salvare un handler pentru click.

Scrieți toate importurile necesare și scrieți funcția-handler onSaveStudentClick, aplicând metoda dispatch așa cum este arătat în lecție.

Porniți aplicația, introduceți în câmpurile formularului date și apăsați pe butonul de salvare. Asigurați-vă că în partea de jos a paginii s-a adăugat un nou student.

Deschideți Redux DevTools și parcurgeți filele Action și State, asigurați-vă că noul obiect cu studentul se adaugă. Uitați-vă la obiectul action care v-a fost generat, trimiteți-l în răspunsul la această sarcină.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge