⊗jsrxPmRDARR 32 of 57 menu

Redukserio pridėjimas į Redux programą

Ankstesnėje pamokoje mes sukūrėme komponentą UserReaction tam, kad kiekvienas produktas turėtų ir naudotojų reakcijas. Dabar mums reikia parašyti redukserį, kuris apdoros skaitliuką reakcijų paspaudus naudotojui mygtuką tos ar kitos reakcijos.

Atidarykime mūsų programą su produktais, o joje failą productsSlice.js su visais redukseriais. Dabar savybėje reducers sukurkime dar vieną redukserį reactionClicked (galime jį padėti pirmą - prieš productAdded, nors tai nesvarbu). Kaip įprasta, perduokime jam parametrais state ir action:

reactionClicked(state, action) {},

O dabar viduje riestinių skliaustų, kuriuos mes palikome tuščius ankstesniame žingsnyje, parašykime jam kodą. Pirmiausia išskirsime produkto id iš payload objekto action ir reakcijos pavadinimą:

const { productId, reaction } = action.payload

Tada iš perduotos būsenos gausime reikiamą produktą:

const currentProduct = state.find(product => product.id === productId)

Ir jei toks produktas yra, padidinsime perduotos reakcijos reikšmę 1:

if (currentProduct) { currentProduct.reactions[reaction]++ }

Štai ir viskas, mūsų kodas reactionClicked paruoštas:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

Failo pabaigoje pridėkime eksportą gauto veiksmo kūrėjo:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

Čia būtina pažymėti du svarbius momentus. Kaip jūs prisimenate iš ankstesnių pamokų - atnaujinti taip tiesiogiai reikšmę redukserio kode negalima (pažiūrėkite į šią eilutę: reactions[reaction]++), bet mums tai praeis, nes tai darome viduje createSlice, kuris naudoja Immer biblioteką. Ji ir pasirūpins, kad perkurtų mūsų kodą į "saugų" reikšmės atnaujinimą. Tai leidžia mums rašyti sudėtingus dalykus paprastesniu būdu.

Kitas dalykas, kurį reikia atsiminti - objektas action turi turėti minimaliai įmanomą informacijos kiekį - tik tiek, kad nurodytų kas atsitiko. Jame nereikia daryti jokių skaičiavimų. Visi skaičiavimai būsenos atnaujinimui turi būti daromi redukseryje, čia galima tam parašyti tiek logikos, kiek prireiks.

Atidarykite savo programą su studentais ir faile studentsSlice.js pridėkite dar vieną redukserį voteClicked į lauką reducers, kaip parodyta pamokoje. Parašykite kodą jam. Jūsų redukserio užduotis - paspaudus padidinti reikšmę vote (arba balsą), kurį paspaudė, tam studentui, 1.

Failo pabaigoje nepamirškite eksportuoti gauto veiksmo kūrėjo voteClicked.

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