⊗jsrxPmRDEF 24 of 57 menu

Redux-də Məlumatları Redaktə Etmə Forması

İndi bizim store-dakı məlumatları dəyişmək üçün reducer-ımız var. Bu dərsdə biz məhsul məlumatlarını redaktə edə biləcəyimiz bir forma yaradacağıq.

Gəlin məhsul tətbiqimizi açıq və products qovluğunda EditProductForm.jsx faylını yaradaq. EditProductForm komponentinin yaradılması, üzərində dayanacağımız bəzi fərqlər xaricində, NewProductForm-a bənzəyəcək. Buna görə də, NewProductForm.jsx-dakı kodu tam kopyalayın və yaradılmış EditProductForm.jsx faylına yapışdırın. İndi sıra ilə başlayaq.

Importdan nanoid-i çıxarın, burada bizə id yaratmaq lazım deyil. productAdded importunu productUpdated ilə əvəz edin, çünki burada biz əlavə etmək əvəzinə yeniləmə action-undan istifadə edəcəyik.

Sonra, komponent funksiyamızın adını NewProductForm-dan EditProductForm-a dəyişək.

EditProductForm funksiyasında name, desc, priceamount üçün lokal state-ləri təyin etməzdən əvvəl, gəlin bir neçə sətir kod daha əlavə edək. Daha əvvəl də qeyd etdiyimiz kimi, burada bizim id yaratmaya ehtiyacımız yoxdur. İndi vəzifəmiz onu dəyişdiriləcək məhsulun məlumatlarından əldə etməkdir. Biz bunu əvvəl məhsulun ayrıca səhifəsini yaradarkən də etmişik. Beləliklə, useParams hook-u vasitəsilə id-ni əldə edək, və sonra useSelector hook-undan istifadə edərək (faylın əvvəlində hər iki hook-u import etməyi unutmayın) lazımi məhsulu tapaq:

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

Bundan sonra lokal state elanları olan bloku dəyişək. İndi bizə onlara başlanğıc dəyər olaraq store-dan əldə edilmiş məhsul məlumatlarını təyin etmək lazımdır. Birinci state belə görünəcək, qalan üçünü özünüz dəyişdirin:

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

useDispatch üçün dəyişən təyin edildikdən sonra gəlin bu dəfə useNavigate hook-u üçün daha bir sətir kod əlavə edək. Biz onu istifadəçi formada edilmiş dəyişiklikləri yadda saxladıqda məhsulun səhifəsinə qayıtmaq üçün istifadə edəcəyik:

const navigate = useNavigate()

Həmçinin bu hook-u faylın əvvəlində import edək:

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

Sonra bizdə daxil etmə sahələri üçün işləyicilər gəlir. Və onlardan sonra biz onSaveProductClick funksiyasını düzəltməliyik. İndi ora kliklədikdə biz əldə edilmiş id və dəyişdirilmiş məlumatları obyekt şəklində göndərərək productUpdated action-unu dispatch edəcəyik. Sonra dəyişdirilmiş məhsulun səhifəsinə keçid üçün navigate əlavə edəcəyik:

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

Yalnız qaytarılan qaydada olan aşağıdakı sətri tapmaq qalır:

<h2>Add a New Product</h2>

Və onu bununla əvəz edin:

<h2>Edit Product</h2>

Tələbə tətbiqinizi açın. EditStudentForm.jsx faylını NewStudentForm.jsx-a bənzətməklə yaradın. Dərsdə göstərildiyi kimi ona dəyişikliklər edin.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et