⊗jsrxPmRDEF 24 of 57 menu

Obrazec za urejanje podatkov v Reduxu

Sedaj imamo reducer za spreminjanje podatkov v store. V tej lekciji bomo ustvarili obrazec, s katerim bomo lahko uredili podatke izdelka.

Odprimo našo aplikacijo z izdelki in ustvarimo v mapi products datoteko EditProductForm.jsx. Ustvarjanje komponente EditProductForm bo podobno NewProductForm, z izjemo nekaterih razlik, na katerih se bomo ustavili. Zato v celoti kopirajte kodo NewProductForm.jsx in jo prilepite v ustvarjeno datoteko EditProductForm.jsx. Zdaj pa začnimo po vrsti.

Odstranite iz uvoza nanoid, tukaj ga ne potrebujemo generirati. Zamenjajte uvoz productAdded z productUpdated, saj tukaj bomo uporabili action za posodobitev in ne za dodajanje izdelka.

Nato spremenimo ime naše funkcije komponente iz NewProductForm v EditProductForm.

Preden bomo vzpostavili lokalna stanja v funkciji EditProductForm za name, desc, price in amount, vstavimo še nekaj vrstic kode. Kot smo že omenili prej, tukaj nam ni treba generirati id. Zdaj je naša naloga, da ga pridobimo iz podatkov izdelka, ki ga urejamo. To smo že naredili pri ustvarjanju ločene strani za izdelek. Torej, pridobimo id s pomočjo huka useParams, nato pa poiščemo želeni izdelek, z uporabo huka useSelector (ne pozabite uvoziti obeh hukov na začetku datoteke):

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

Po tem spremenimo blok z deklaracijo lokalnih stanj. Zdaj moramo kot začetno vrednost nastaviti podatke izdelka, pridobljene iz store. Tako bo izgledalo prvo stanje, preostale tri spremenite sami:

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

Po dodelitvi spremenljivke za useDispatch dodajmo še eno vrstico kode za tokrat za huk useNavigate. Uporabili ga bomo za vrnitev na stran z izdelkom, ko bo uporabnik shranil spremembe, vnesene v obrazcu:

const navigate = useNavigate()

Prav tako uvozimo ta huk na začetku datoteke:

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

Nato sledijo obdelovalniki za polja za vnos. In za njimi moramo popraviti funkcijo onSaveProductClick. Zdaj bomo ob kliku vanjo poslali akcijo productUpdated z pridobljenim id-jem in spremenjenimi podatki v obliki objekta. Nato bomo dodali naš navigate, za prehod na stranico spremenjenega izdelka:

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

Ostalo je le še, da v naši vrnjeni versti poiščemo vrstico:

<h2>Add a New Product</h2>

In jo zamenjajte z:

<h2>Edit Product</h2>

Odprite vašo aplikacijo s študenti. Ustvarite datoteko EditStudentForm.jsx po analogiji z NewStudentForm.jsx. Vnesite vanjo spremembe, kot je prikazano v lekciji.

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