⊗jsrxPmRDEF 24 of 57 menu

Forma duomenų redagavimui Redux

Dabar mes turime reducerį, skirtą duomenų pakeitimui store. Šioje pamokoje sukursime formą, kurios pagalba galėsime redaguoti produkto duomenis.

Atidarykime mūsų produktų aplikaciją ir sukurkime aplanke products failą EditProductForm.jsx. Komponento EditProductForm kūrimas bus analogiškas NewProductForm, išskyrus kai kuriuos skirtumus, kuriuos pabrėšime. Todėl nukopijuokite visą NewProductForm.jsx kodą ir įklijuokite jį į sukurtą failą EditProductForm.jsx. Dabar pradėkime nuosekliai.

Pašalinkite iš importo nanoid, čiau mums nereikia generuoti id. Pakeiskite importą productAdded į productUpdated, nes čia mes naudosime action atnaujinimui, o ne produkto pridėjimui.

Toliau pakeisime mūsų komponento funkcijos pavadinimą iš NewProductForm į EditProductForm.

Prieš įvedant lokalias būsenas funkcijoje EditProductForm name, desc, price ir amount, įdėkime dar kelias kodo eilutes. Kaip jau minėjome anksčiau, čiau mums nereikia generuoti id. Dabar mūsų užduotis yra gauti jį iš keičiamo produkto duomenų. Mes tai jau darėme kuriant atskirą produkto puslapį. Taigi, gausime id naudodami hook'ą useParams, ir tada rasime mums reikalingą produktą, naudodami hook'ą useSelector (nepamirškite importuoti abiejų hook'ų failo pradžioje):

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

Po to pakeisime bloką su lokalios būsenos deklaravimu. Dabar mums reikia kaip pradinę reikšmę nustatyti iš store gautus produkto duomenis. Štai kaip atrodys pirmoji būsena, perdarykite tris likusias patys:

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

Po kintamojo priskyrimo useDispatch įdėkime dar vieną kodo eilutę šį kartą hook'ui useNavigate. Mes jį naudosime grįžimui į produkto puslapį, kai vartotojas išsaugos forme atliktus pakeitimus:

const navigate = useNavigate()

Taip pat importuokime šį hook'ą failo pradžioje:

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

Toliau mes turime tvarkytuvus įvesties laukams. Po jų mums reikia pataisyti funkciją onSaveProductClick. Dabar joje paspaudę siųsime action'ą productUpdated su gautu id ir pakeistais duomenimis objekto pavidalu. Po to pridėsime mūsų navigate, kad pereitume į pakeisto produkto puslapį:

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

Beliko tik mūsų grąžinamoje vertiske rasti eilutę:

<h2>Add a New Product</h2>

Ir pakeisti ją į:

<h2>Edit Product</h2>

Atidarykite savo studentų aplikaciją. Sukurkite failą EditStudentForm.jsx pagal analogiją su NewStudentForm.jsx. Įdėkite jį pakeitimus, kaip parodyta pamokoje.

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti