⊗jsrxPmWFRs 12 of 57 menu

Reducery v Reduxu

V minulé lekci jsme pomocí funkce createSlice vytvořili slice pro produkty products a reducer, který bude aktualizovat tento slice uložený v store. Ještě jednou připomínám, že v Reduxu se data stavu mění pomocí reducerů.

Je třeba pamatovat, že na reducery jsou kladena určitá omezení. Reducer aktualizuje stav pouze na základě obdržených hodnot aktuálního stavu a objektu action, a poté rozhodne, jak změnit stav a vrátí jeho novou hodnotu.

Víme, že ve výchozím nastavení jsou objekty a pole v JavaScriptu mutovatelné (změnitelné). Také víme, že nelze měnit state přímo, v takovém případě je třeba pracovat pouze s kopiemi. Tomu musí vyhovovat i reducer. Ale psaní takové logiky ručně může být dost únavné a složité, a zde přichází na pomoc funkce createSlice, která používá knihovnu Immer, přeměňující váš 'mutovatelný' kód na 'nemutovatelný'. Thus, hřešit a zjednodušovat život lze pouze při použití funkcí createSlice nebo createReducer.

Mezi omezení reduceru patří také použití asynchronní logiky, výpočet náhodných hodnot a provádění dalších "vedlejších efektů". A nyní, když jsme se s reducerem blíže seznámili, vrátíme se k naší aplikaci s produkty.

V naší aplikaci je store, který jsme vytvořili v předchozích lekcích, ale zatím v něm nic není. Pojďme otevřít náš soubor store.js a přidat do něj trochu kódu. Pro začátek do něj importujme funkci reduceru pro produkty:

import productsReducer from '../parts/products/productsSlice'

Nyní jako reducer můžeme zadat importovanou funkci productsReducer:

export default configureStore({ reducer: { products: productsReducer } })

Výše uvedeným řádkem říkáme našemu store, že nyní při vzniku action budou všechna data pro slice state.products aktualizována reducerem productsReducer.

Nyní můžete spustit aplikaci (všimněte si, že v konzoli zmizelo varování o neplatném reduceru!), otevřít Redux DevTools v prohlížeči a procházet jeho záložkami. Například, stisknutím záložky State v záložce Inspector můžeme vidět naše dva objekty s produkty, které se zobrazily jako počáteční hodnota stavu při prvním spuštění aplikace. Na záložce Log monitor vidíme, jaké slice má globální stav - je to slice products, obsahující dva objekty. Také se podívejte na záložku Chart.

Otevřete vaši aplikaci se studenty a změňte kód souboru store.js, jak je ukázáno v lekci.

Spusťte ve svém prohlížeči vaši aplikaci a procházejte záložky rozšíření Redux DevTools.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout