⊗jsrxPmRDEF 24 of 57 menu

Форма за уредување на податоци во Redux

Сега имаме редуктор за менување податоци во store. На овој урок ќе создадеме форма, со која ќе можеме да ги уредуваме податоците за производот.

Да ја отвориме нашата апликација со производи и да создадеме во папката products датотека EditProductForm.jsx. Создавањето на компонентата EditProductForm ќе биде аналогно на NewProductForm, со исклучок на некои разлики, на кои ќе се задржиме. Затоа копирајте го целосно кодот од NewProductForm.jsx и вметнете го во создадената датотека EditProductForm.jsx. Сега да почнеме по ред.

Отстранете го од импортот nanoid, овде не ни треба да генерираме id. Заменете го импортот productAdded со productUpdated, бидејќи овде ќе користиме action за ажурирање, а не за додавање на производ.

Понатаму ќе го смениме името на нашата функција на компонентата од NewProductForm на EditProductForm.

Пред да ги воведеме локалните state-ови во функцијата EditProductForm за name, desc, price и amount, да вметнеме уште неколку линии код. Како што веќе споменавме претходно, овде не ни треба да генерираме id. Сега нашата задача е да го добиеме од податоците на производот што се менува. Ние веќе го направивме ова при создавањето на посебна страница за производот. Значи, ќе го добиеме id со помош на hook-от useParams, а потоа ќе го пронајдеме потребниот производ, користејќи го hook-от useSelector (не заборавајте да ги импортирате обата hook-ови на почетокот на датотеката):

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

После ова, ќе го смениме блокот со декларација на локалните state-ови. Сега ни треба како почетна вредност да им ги зададеме добиените од store податоци за производот. Вака ќе изгледа првиот state, преработете ги трите преостанати сами:

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

По доделувањето на променливата за useDispatch да додадеме уште една линија код овој пат за hook-от useNavigate. Ќе го користиме за враќање на страницата со производот, кога корисникот ќе ги зачува направените промени во формата:

const navigate = useNavigate()

Исто така, импортирајте го овој hook на почетокот на датотеката:

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

Понатаму имаме обработувачи за полињата за внесување. А после нив ни е потребно да ја прилагодиме функцијата onSaveProductClick. Сега во неја при клик ќе испраќаме акција productUpdated со добиениот id и променетите податоци во вид на објект. После ќе го додадеме нашиот navigate, за премин на страницата на променетиот производ:

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

Останува само во нашиот вратен HTML да ја пронајдеме линијата:

<h2>Add a New Product</h2>

И да ја замениме со:

<h2>Edit Product</h2>

Отворете ја вашата апликација со студенти. Создадете датотека EditStudentForm.jsx по аналогија со NewStudentForm.jsx. Внесете во неа промени, како што е прикажано во лекцијата.

Македонски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј