⊗jsrxPmRDEF 24 of 57 menu

Деректерді Redux-та өңдеу пішіні

Енді бізде store-дегі деректерді өзгерту үшін редьюсер бар. Осы сабақта біз өнім деректерін өңдей алатын пішін жасаймыз.

Өнімдер қолданбасын ашып, products бумасында EditProductForm.jsx файлын жасайық. EditProductForm компонентін жасау NewProductForm-ке ұқсас болады, тек біз тоқталатын бірнеше айырмашылықтар бар. Сондықтан NewProductForm.jsx-тің кодын толық көшіріп, жасалған EditProductForm.jsx файлына салыңыз. Енді ретімен бастайық.

Импорттан nanoid-ті алып тастаңыз, мұнда бізге id generate etu қажет емес. productAdded импортын productUpdated-ке ауыстырыңыз, себебі мұнда біз қосу үшін емес, өнімді жаңарту үшін action қолданамыз.

Әрі қарай біздің компонент функциясының атауын NewProductForm-тен EditProductForm-ке өзгертеміз.

EditProductForm функциясында name, desc, price және amount үшін жергілікті стейттерді енгізбес бұрын, тағы бірнеше жол кодын салайық. Біз бұған дейін айтқанымыздай, мұнда бізге id generate etu қажет емес. Енді біздің міндетіміз өзгертілетін өнім деректерінен оны алу. Біз мұны өнімге арналған жеке парақшаны жасаған кезде жасадық. Сонымен, useParams көмегімен id алайық, содан кейін useSelector көмегімен (файлдың басында екі hook те импорттауды ұмытпаңыз) бізге қажет өнімді табайық:

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

Осыдан кейін жергілікті стейттерді декларациялау блокын өзгертеміз. Енді бізге бастапқы мән ретінде store-дан алынған өнім деректерін тағайындау керек. Бірінші стейт осылай көрінеді, қалған үшеуін өзгертуді өзіңіз жасаңыз:

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

useDispatch үшін айнымалыны тағайындағаннан кейін, біз useNavigate hook-і үшін тағы бір жол кодын енгіземіз. Біз оны пайдаланушы пішіндегі өзгерістерді сақтаған кезде өнім парақшасына оралу үшін қолданамыз:

const navigate = useNavigate()

Сондай-ақ бұл hook-ті файлдың басында импорттаңыз:

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

Әрі қарай бізде енгізу өрістері үшін өңдеушілер бар. Олардан кейін бізге onSaveProductClick функциясын түзету керек. Енді онда басқан кезде біз алынған id және объект түріндегі өзгертілген деректермен productUpdated экшенін жібереміз. Содан кейін өзгертілген өнім парақшасына өту үшін navigate-ті қосамыз:

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

Біздің қайтарылатын версткада мына жолды табу ғана қалды:

<h2>Add a New Product</h2>

Және оны мынаған ауыстырыңыз:

<h2>Edit Product</h2>

Студенттеріңізбен қолданбаны ашыңыз. NewStudentForm.jsx-ке ұқсас EditStudentForm.jsx файлын жасаңыз. Сабақта көрсетілгендей оған өзгерістер енгізіңіз.

Қазақ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČ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
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау