⊗jsrxPmRDEP 23 of 57 menu

Redux store-da məhsul məlumatlarının dəyişdirilməsi

Biz məhsul əlavə etməyi öyrəndik, bəs məhsul haqqında məlumatı dəyişmək istəsək necə? Gəlin bu və sonrakı dərslərdə bunun necə ediləcəyini nəzərdən keçirək.

Məhsullarla olan tətbiqimizi açaq və productsSlice.js faylına keçək. Gəlin products dilimi üçün məhsul yeniləndikdə işə düşəcək başqa bir reducer yazmağa ehtiyacımız olduğundan başlayaq. Ona productUpdated adını verək və reducers sahəsinə productAdded reducerindən sonra əlavə edək. Həmçinin dərhal ona parametrlər kimi stateaction ötürək, xatırladığımız kimi, reducer bunlar əsasında işləyir:

reducers: { productAdded(state, action) { state.push(action.payload) }, productUpdated(state, action) {}, },

İndi gəlin düşünək, məhsulu yeniləmək üçün bizə hansı məlumatlar lazımdır. Əvvəla - bu iddir, onun vasitəsilə biz store-da bizi maraqlandıran məhsulu tapa biləcəyik. Qalan məlumatlar - ad, təsvir, qiymət və miqdar dəyişiklik üçün bizdə olacaq. Bütün bu dəyərləri bizə gələcək olan action obyektinin payload xassəsindən alacağıq və əgər onu əl ilə yazsaydıq, onda o aşağıda göstərildiyi kimi görünərdi. Qeyd edin ki, payload xassəsinin gözlənilən dəyəri - bir arqumentdir, ona görə də biz bura obyekt ötürəcəyik (bu barədə sonra danışacağıq):

{ type: 'products/productUpdated', payload: {id, name, desc, price, amount} }

Əsas məqamları aşkar etdikdən sonra, indi biz productUpdated üçün kod yaza bilərik. Əvvəlcə action obyektindən dəyişdirilmiş məlumatları əldə edək:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload },

İndi biz əldə edilmiş id-yə görə dəyişdirilməsi lazım olan məhsulu tapacağıq:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) },

Əgər belə bir məhsul storeda tapılsa, onda biz onun məlumatlarını yeni dəyərlərlə əvəz edəcəyik:

productUpdated(state, action) { const { id, name, desc, price, amount } = action.payload const desiredProduct = state.find(product => product.id === id) if (desiredProduct) { desiredProduct.name = name desiredProduct.desc = desc desiredProduct.price = price desiredProduct.amount = amount } },

Bizə yalnız komponentdə istifadə üçün action creatoru ixrac etmək qalır, ki bunu da bizim üçün createSlice xoşluqla yaradacaq. Gəlin onu faylın sonunda mövcud olan productAdded ilə birlikdə ixraca əlavə edək:

export const { productAdded, productUpdated } = productsSlice.actions

Tələbələrlə olan tətbiqinizi açın. Dərsin materialını öyrənərək, studentsSlice.js faylında productsSlice üçün storeda tələbə məlumatlarını istifadəçi tərəfindən dəyişildikdə yeniləyən başqa bir reducer əlavə edin. Ona studentUpdated adını verin.

Bəs bu halda sizin action obyektiniz necə görünərdi? Onun kodunu cavabınızda göndərin.

Faylın sonunda əldə edilən action creator studentUpdated-i ixrac 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