⊗jsrxPmWFDA 18 of 57 menu

Action siuntimas ir useDispatch kabliukas Redux

Mes įgyvendinome beveik visas reikalingas Redux aplikacijos dalis. Belieka tik išsiaiškinti, kaip siųsti action iš React komponento. Pradėkime.

Atidarykite mūsų produktų aplikaciją. Formos komponente NewProductForm mes turime mygtuką naujo produkto duomenims išsaugoti. Uždėkime jam paspaudimo apdorotoją. Paspaudus ant jo, turi būti iškviestas apdorotojas onSaveProductClick:

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

Kuriant naują produktą, mums reikės jam naujo id. Jį sugeneruosime naudodami visiems žinomą biblioteką nanoid. Beje, jos diegti nereikia, nes ji jau ateina su RTK paketu. Pridėkime nanoid prie importo:

import { nanoid } from '@reduxjs/toolkit'

Taip pat prisimename, kad vienintelis būdas pakeisti state - tai iškviesti metodą dispatch, kuris yra store'e ir perduoti action objektą. Kad pasiektume šį metodą, mes panaudosime React-Redux kablį useDispatch. Importuokime jį:

import { useDispatch } from 'react-redux'

Funkcijos NewProductForm kode aprašykime jai konstantą dispatch iškart po to, kai aprašėme konstantas savo lokaliems state'ams:

const dispatch = useDispatch()

Taip pat mums reikia importuoti action creator'į productAdded, kurį gavome praeitoje pamokoje:

import { productAdded } from './productsSlice'

Dabar galime parašyti pačią funkciją apdorotoją onSaveProductClick. Padarykime tai prieš komandą return:

const onSaveProductClick = () => {}

Funkcijos viduje iškviečiame dispatch, formuojame action objektą, į savybę payload pateks sugeneruotas id, pavadinimas, aprašas, kaina ir kiekis produkto. Visus šiuos duomenis paimame iš lokalių state'ų. Tuo pat metu pradžioje patikriname sąlygoje, ar visi laukai užpildyti - tik tokiu atveju kviečiame dispatch. Pabaigoje funkcijos kodo grąžiname lokaliuosius state'us į pradinę būseną:

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

Dabar paleiskime mūsų aplikaciją, įveskime duomenis į formos laukus ir paspauskime mygtuką išsaugojimo. Valio, apačioje puslapio pasirodė naujas produktas. Atidarę Redux DevTools, o jame skirtuką Inspector, matome, kad kairėje pusėje, be @@INIT, atsirado ir mūsų action products/productAdded. Dešinėje dalyje galime spustelėti skirtukus Action ir State, perjungdami tuo pat metu @@INIT ir products/productAdded. Dabar matome, kad mūsų naujas produktas pridedamas. Taip pat skirtuke Action matome action, automatiškai sugeneruotą naudojant createSlice (spustelėkite, pavyzdžiui, ant Raw). Valio: nereikėjo jo rašyti rankiniu būdu.

Atidarykite savo studentų aplikaciją, o tada failą NewStudentForm.jsx, uždėkite ant išsaugojimo mygtuko paspaudimo apdorotoją.

Parašykite visus reikalingus importus ir parašykite funkciją-apdorotoją onSaveStudentClick, taikydami metodą dispatch kaip parodyta pamokoje.

Paleiskite aplikaciją, įveskite į formos laukus duomenis ir paspauskite ant išsaugojimo mygtuko. Įsitikinkite, kad puslapio apačioje pridėjo naujas studentas.

Atidarykite Redux DevTools ir pereikite per skirtukus Action ir State, įsitikinkite, kad naujas studento objektas pridedamas. Pažiūrėkite į action objektą, kuris jums sugeneravosi, atsiųskite jį atsakyme į šią užduotį.

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