⊗jsrxPmRDARR 32 of 57 menu

Pridanie reduktora do Redux aplikácie

V minulej lekcii sme vytvorili komponent UserReaction aby mal každý produkt aj používateľské reakcie. Teraz potrebujeme napísať reduktor, ktorý bude spracovávať počítadlo reakcií pri kliknutí používateľom na tlačidlo tej alebo inej reakcie.

Otvorme našu aplikáciu s produktmi, a v nej súbor productsSlice.js so všetkými reduktormi. Teraz vo vlastnosti reducers vytvoríme ďalší reduktor reactionClicked (môžeme ho umiestniť prvý - pred productAdded, aj keď to nie je dôležité). Ako obvykle, predáme mu parametre state a action:

reactionClicked(state, action) {},

A teraz vo vnútri zložených zátvoriek, ktoré sme nechali prázdne v predchádzajúcom kroku, napíšeme pre neho kód. Po prvé, extrahujeme id produktu z payload objektu action a názov reakcie:

const { productId, reaction } = action.payload

Potom z predaného stavu získame potrebný produkt:

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

A ak taký produkt existuje, zvýšime hodnotu predanej reakcie o 1:

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

To je všetko, náš kód pre reactionClicked je pripravený:

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

Nakoniec v súbore pridajme export vytvoreného action creator:

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

Tu je potrebné poznamenať dve dôležité veci. Ako si pamätáte z predchádzajúcich lekcií - aktualizovať hodnotu priamo takýmto spôsobom v kóde reduktora nie je možné (pozrite sa na tento riadok: reactions[reaction]++), ale nám to prejde, pretože to robíme vo vnútri createSlice, ktorý používa knižnicu Immer. Tá sa postará o to, aby pretransformovala náš kód na "bezpečnú" aktualizáciu hodnoty. To nám umožňuje písať zložité veci jednoduchším spôsobom.

Ďalšia vec, ktorú je potrebné mať na pamäti - objekt action by mal obsahovať čo najmenšie možné množstvo informácií - len toľko, aby určil, čo sa stalo. Nemali by sa v ňom vykonávať žiadne výpočty. Všetky výpočty pre aktualizáciu stavu by sa mali robiť v reduktore, tu môžete na to napísať toľko logiky, koľko je potrebné.

Otvorte svoju aplikáciu so študentmi a v súbore studentsSlice.js pridajte ďalší reduktor voteClicked do poľa reducers, ako je ukázané v lekcii. Napíšte pre neho kód. Úloha vášho reduktora - pri kliknutí zvýšiť hodnotu vote (alebo hlasu), na ktorý sa kliklo, pre daného študenta, o 1.

Na konci súboru nezabudnite exportovať vytvorený action creator voteClicked.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť