⊗jsrxPmRDEF 24 of 57 menu

Datu rediģēšanas forma Redux

Tagad mums ir reducers, lai mainītu datus store. Šajā nodarbībā mēs izveidosim formu, ar kuras palīdzību mēs varēsim rediģēt produkta datus.

Atveram savu produktu lietotni un izveidosim mapē products failu EditProductForm.jsx. Komponenta EditProductForm izveide būs līdzīga NewProductForm, izņemot dažas atšķirības, uz kurām mēs pakavēsimies. Tāpēc nokopējiet visu NewProductForm.jsx kodu un ielīmējiet to izveidotajā failā EditProductForm.jsx. Tagad sāksim secīgi.

Noņemiet no importa nanoid, šeit mums nav jāģenerē id. Aizstājiet importu productAdded ar productUpdated, jo šeit mēs izmantosim action atjaunināšanai, nevis pievienošanai produktam.

Tālāk mainīsim mūsu komponenta funkcijas nosaukumu no NewProductForm uz EditProductForm.

Pirms mēs izveidosim lokālos state funkcijā EditProductForm priekš name, desc, price un amount, ievietosim vēl dažas koda rindiņas. Kā jau minējām iepriekš, šeit mums nav jāģenerē id. Tagad mūsu uzdevums ir to iegūt no maināmā produkta datiem. Mēs jau esam tā darījuši, veidojot atsevišķu lapu produktam. Tātad, iegūstam id, izmantojot hook useParams, un pēc tam atradīsim vajadzīgo produktu, izmantojot hook useSelector (neaizmirstiet importēt abus hook faila sākumā):

let params = useParams() const { productId } = params const product = useSelector((state) => state.products.find((product) => product.id === productId) )

Pēc tam mainīsim bloku ar lokālo state deklarēšanu. Tagad mums kā sākotnējās vērtības ir jāiestata no store iegūtie produkta dati. Lūk, kā izskatīsies pirmais state, pārveidojiet atlikušos trīs paši:

const [name, setName] = useState(product.name)

Pēc mainīgā piešķiršanas priekš useDispatch ievietosim vēl vienu koda rindiņu šoreiz priekš hook useNavigate. Mēs to izmantosim, lai atgrieztos lapā ar produktu, kad lietotājs saglabās veidnē veiktās izmaiņas:

const navigate = useNavigate()

Arī importējiet šo hook faila sākumā:

import { useNavigate, useParams } from 'react-router-dom'

Tālāk mums ir apstrādātāji priekš ievades laukiem. Un pēc tiem mums nepieciešams labot funkciju onSaveProductClick. Tagad tajā, kad noklikšķinās, mēs sūtīsim action productUpdated ar iegūto id un mainītajiem datiem objekta veidā. Pēc tam pievienosim mūsu navigate, lai pārietu uz mainītā produkta lapu:

const onSaveProductClick = () => { if (name && desc && price && amount) { dispatch( productUpdated({ id: productId, name, desc, price, amount, }) ); navigate(`/products/${productId}`); } }

Atliek tikai mūsu atgriezeniskajā verstē atrast rindiņu:

<h2>Add a New Product</h2>

Un aizstāt to ar:

<h2>Edit Product</h2>

Atveriet savu studentu lietotni. Izveidojiet failu EditStudentForm.jsx pēc analoģijas ar NewStudentForm.jsx. Ievadiet tajā izmaiņas, kā parādīts nodarbībā.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt