⊗jsrxPmRDEF 24 of 57 menu

Forma za uređivanje podataka u Redux-u

Sada imamo reducer za promenu podataka u store-u. Na ovoj lekciji ćemo kreirati formu, pomoću koje ćemo moći da uređujemo podatke o proizvodu.

Otvorimo našu aplikaciju sa proizvodima i kreirajmo u folderu products fajl EditProductForm.jsx. Kreiranje komponente EditProductForm biće analogno NewProductForm, osim nekih razlika, na kojima ćemo se zadržati. Zato kopirajte celokupni kod NewProductForm.jsx i nalepite ga u kreirani fajl EditProductForm.jsx. Sada ćemo krenuti redom.

Uklonite iz importa nanoid, ovde nam nije potrebno generisati id. Zamenite import productAdded sa productUpdated, pošto ovde ćemo koristiti action za ažuriranje, a ne za dodavanje proizvoda.

Zatim ćemo promeniti naziv funkcije naše komponente sa NewProductForm na EditProductForm.

Pre nego što definišemo lokalne stanje u funkciji EditProductForm za name, desc, price i amount, hajde da ubacimo još nekoliko linija koda. Kao što smo ranije pomenuli, ovde nam nije potrebno generisati id. Sada je naš zadatak da ga dobijemo iz podataka proizvoda koji se menja. Već smo to radili prilikom kreiranja zasebne stranice za proizvod. Dakle, dobijmo id pomoću huka useParams, a zatim pronađimo potrebni proizvod, koristeći huk useSelector (ne zaboravite da importujete oba huka na početku fajla):

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

Posle toga ćemo promeniti blok sa deklaracijom lokalnih stanja. Sada nam je potrebno da kao početnu vrednost postavimo podatke o proizvodu dobijene iz store-a. Ovako će izgledati prvo stanje, prepravite tri preostala sama:

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

Nakon dodeljivanja promenljive za useDispatch hajde da unesemo još jednu liniju koda ovog puta za huk useNavigate. Koristićemo ga za povratak na stranicu sa proizvodom, kada korisnik sačuva izmene unete u formi:

const navigate = useNavigate()

Takođe importujte ovaj huk na početku fajla:

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

Zatim idu rukovaoci (handlers) za polja unosa. A nakon njih nam je potrebno da ispravimo funkciju onSaveProductClick. Sada ćemo u njoj pri kliku slati akciju productUpdated sa dobijenim id-jem i izmenjenim podacima u vidu objekta. Zatim ćemo dodati naš navigate, za prelazak na stranicu izmenjenog proizvoda:

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

Ostalo je samo da u našoj vraćenoj verstici (JSX) nađemo liniju:

<h2>Add a New Product</h2>

I zamenimo je sa:

<h2>Edit Product</h2>

Otvorite vašu aplikaciju sa studentima. Kreirajte fajl EditStudentForm.jsx po analogiji sa NewStudentForm.jsx. Unesite u njega izmene, kao što je prikazano na lekciji.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij