⊗jsrxPmRDEF 24 of 57 menu

Skjema for redigering av data i Redux

Nå har vi en reducer for å endre data i store. I denne leksjonen vil vi lage et skjema som vi kan bruke til å redigere produktdata.

La oss åpne produktapplikasjonen vår og opprette filen EditProductForm.jsx i mappen products. Opprettelsen av komponenten EditProductForm vil være analog med NewProductForm, med unntak av noen forskjeller som vi vil fokusere på. Derfor, kopier all koden fra NewProductForm.jsx og lim den inn i den opprettede filen EditProductForm.jsx. La oss nå begynne i rekkefølge.

Fjern importen av nanoid, vi trenger ikke generere id her. Erstatt importen av productAdded med productUpdated, fordi her vil vi bruke action for oppdatering, og ikke for tilføyelse av produkt.

Deretter endrer vi navnet på funksjonen til vår komponent fra NewProductForm til EditProductForm.

Før vi setter opp de lokale statene i funksjonen EditProductForm for name, desc, price og amount, la oss sette inn noen flere kodelinjer. Som vi nevnte tidligere, trenger vi ikke generere id her. Nå er vår oppgave å få den fra dataene til det endrede produktet. Vi har allerede gjort dette da vi opprettet en separat side for produktet. Så, la oss hente id ved hjelp av hooken useParams, og deretter finne det produktet vi trenger, ved å bruke hooken useSelector (ikke glem å importere begge hookene i starten av filen):

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

Etter dette endrer vi blokken med deklarasjonen av de lokale statene. Nå må vi sette de innhentede dataene fra store som startverdi. Slik vil den første staten se ut, endre de tre gjenværende selv:

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

Etter tilordningen av variabelen for useDispatch la oss sette inn en kodelinje til denne gangen for hooken useNavigate. Vi vil bruke den for å returnere til siden med produktet når brukeren lagrer endringene gjort i skjemaet:

const navigate = useNavigate()

Importer også denne hooken i starten av filen:

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

Deretter har vi behandlerne for inndatafeltene. Og etter dem må vi justere funksjonen onSaveProductClick. Nå vil vi ved klikk sende actionen productUpdated med den innhentede id-en og de endrede dataene som et objekt. Deretter legger vi til navigate for overgang til siden til det endrede produktet:

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

Da gjenstår det bare å finne linjen i vår returnerte oppsett:

<h2>Add a New Product</h2>

Og erstatte den med:

<h2>Edit Product</h2>

Åpne applikasjonen din med studenter. Opprett filen EditStudentForm.jsx på samme måte som NewStudentForm.jsx. Gjør endringer i den, som vist i leksjonen.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis