⊗jsrxPmRDEF 24 of 57 menu

Redux'ta Veri Düzenleme Formu

Artık store'daki verileri değiştirmek için bir reducer'ımız var. Bu derste, bir ürünün verilerini düzenleyebileceğimiz bir form oluşturacağız.

Ürün uygulamamızı açalım ve products klasöründe EditProductForm.jsx dosyasını oluşturalım. EditProductForm bileşeninin oluşturulması, üzerinde duracağımız bazı farklılıklar dışında NewProductForm ile benzer olacaktır. Bu nedenle NewProductForm.jsx dosyasındaki kodu tamamen kopyalayın ve oluşturduğunuz EditProductForm.jsx dosyasına yapıştırın. Şimdi sırayla başlayalım.

İthalattan nanoid'i kaldırın, burada bir id oluşturmamıza gerek yok. productAdded ithalatını productUpdated ile değiştirin, çünkü burada ürün eklemek yerine güncelleme işlemi için eylemi kullanacağız.

Daha sonra bileşen fonksiyonumuzun adını NewProductForm yerine EditProductForm olarak değiştireceğiz.

EditProductForm fonksiyonunda name, desc, price ve amount için yerel state'leri tanımlamadan önce, birkaç satır daha kod ekleyelim. Daha önce de belirttiğimiz gibi, burada bir id oluşturmamıza gerek yok. Şimdi görevimiz, düzenlenen ürünün verilerinden bunu elde etmek. Bunu daha önce bir ürün için ayrı bir sayfa oluştururken de yapmıştık. useParams kancasını kullanarak id'yi alalım, ardından useSelector kancasını kullanarak (dosyanın başında her iki kancayı da ithal etmeyi unutmayın) ihtiyacımız olan ürünü bulalım:

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

Bundan sonra yerel state'lerin tanımlandığı bloğu değiştirelim. Artık onlara başlangıç değeri olarak store'dan alınan ürün verilerini atamamız gerekiyor. İlk state şöyle görünecek, kalan üçünü kendiniz değiştirin:

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

useDispatch için değişken atandıktan sonra, bu sefer useNavigate kancası için bir satır daha kod ekleyelim. Kullanıcı formda yapılan değişiklikleri kaydettiğinde, ürün sayfasına dönmek için bunu kullanacağız:

const navigate = useNavigate()

Ayrıca bu kancayı dosyanın başında içe aktarın:

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

Daha sonra giriş alanları için işleyiciler geliyor. Onlardan sonra onSaveProductClick fonksiyonunu düzeltmemiz gerekiyor. Artık tıklandığında, alınan id'yi ve değiştirilmiş verileri bir nesne olarak içeren productUpdated eylemini göndereceğiz. Ardından, düzenlenen ürünün sayfasına geçiş yapmak için navigate ekleyeceğiz:

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

Geri döndürdüğümüz işaretlemede şu satırı bulmamız kaldı:

<h2>Add a New Product</h2>

Ve bunu şununla değiştirin:

<h2>Edit Product</h2>

Öğrenci uygulamanızı açın. NewStudentForm.jsx dosyasına benzer şekilde EditStudentForm.jsx dosyasını oluşturun. Derste gösterildiği gibi içinde değişiklikler yapın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet