⊗jsrxPmWFDA 18 of 57 menu

Pošiljanje action in hook useDispatch v Redux

Izvedli smo skoraj vse sestavne dele za delovanje Redux aplikacije. Ostalo je samo še razumeti pošiljanje action iz React komponente. Pa začnimo.

Odprite našo aplikacijo s produkti. V formi komponente NewProductForm imamo gumb za shranjevanje podatkov novega produkta. Dodajmo mu obravnavalnik klika. Naj ob kliku nanj sproži obravnavalnik onSaveProductClick:

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

Pri ustvarjanju novega produkta bomo potrebovali nov id zanj. Ustvarili ga bomo z uporabo dobro znane knjižnice nanoid. Mimogrede, ni je treba namestiti, saj je že vključena v paket RTK. Dodajmo nanoid v uvoz:

import { nanoid } from '@reduxjs/toolkit'

Prav tako se spomnimo, da je edini način za spreminjanje state - klicati metodo dispatch, ki je na voljo v store in poslati objekt action. Da pridemo do te metode, bomo uporabili React-Redux hook useDispatch. Uvožimo ga:

import { useDispatch } from 'react-redux'

V kodi funkcije NewProductForm pripravimo zanj konstanto dispatch takoj za tem, ko smo pripravili konstante za naše lokalne state:

const dispatch = useDispatch()

Prav tako moramo uvoziti action creator productAdded, ki smo ga dobili v prejšnji lekciji:

import { productAdded } from './productsSlice'

Zdaj lahko napišemo samo funkcijo obravnavalnika onSaveProductClick. Naredimo to pred ukazom return:

const onSaveProductClick = () => {}

Znotraj funkcije kličemo dispatch, oblikujemo objekt action, v lastnost payload katerega bodo prišli ustvarjeni id, naziv, opis, cena in količina produkta. Vse te podatke vzamemo iz lokalnih state. Pri tem na začetku preverimo v pogoju so vsa polja izpolnjena - samo v tem primeru kličemo dispatch. Na koncu kode funkcije vrnemo lokalne state v začetno stanje:

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

Zdaj zaženemo našo aplikacijo, vnesemo podatke v polja obrazca in pritisnemo gumb shranjevanja. Hura, spodaj na strani se je pojavil nov produkt. Če odpremo Redux DevTools, in v njem zavihek Inspector, vidimo, da je levo poleg @@INIT pojavil še naš action products/productAdded. V desnem delu pa lahko klikamo po zavihkih Action in State, medtem ko preklapljamo med @@INIT in products/productAdded. Zdaj vidimo, da se naš nov produkt doda. Prav tako na zavihku Action vidimo action, samodejno ustvarjen z createSlice (kliknite, na primer, na Raw). Hura: ni nam ga bilo treba napisati ročno.

Odprite vašo aplikacijo s študenti, nato pa datoteko NewStudentForm.jsx, dodajte gumbu shranjevanja obravnavalnik klika.

Zapišite vse potrebne uvoze in napišite funkcijo-obravnavalnik onSaveStudentClick, z uporabo metode dispatch kot je prikazano v lekciji.

Zaženite aplikacijo, vnesite v polja obrazca podatke in pritisnite gumb shranjevanja. Prepričajte se, da se je na strani spodaj dodal nov študent.

Odprite Redux DevTools in pojdite po zavihkih Action in State, prepričajte se, da se nov objekt s študentom doda. Poglejte si objekt action, ki se je ustvaril, pošljite ga v odgovoru na to nalogo.

Slovenščina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Za delovanje spletnega mesta, analitiko in personalizacijo uporabljamo piškotke. Obdelava podatkov poteka v skladu s Politiko zasebnosti.
sprejmi vse nastavi zavrni