Redux je open-sourcová JavaScriptová knihovna, která se používá pro správu stavu aplikace. Jedná se o jednu z knihoven nejčastěji používanějších s React nebo Angular pro stavbu uživatelských interface. Byl vytvořen Danem Abramovem a Andrewem Clarkem a byl inspirován Flux architekturou Facebooku.

Velmi často se využívá spolu s Reactem, ale je kompatibilní s mnoha podobnými frameworky, jako je například Preact nebo Inferno, stejně jako s Angular nebo čistým JavaScriptem. Hlavní koncept Reduxu je to, že celý stav aplikace je uložen v jednom centrálním umístění. Každá komponenta aplikace může mít přímý přístup ke stavu aplikace, aniž by musela posílat props dceřiným komponentám nebo používat callback funkce, aby posílala data mateřským komponentám.

Popis

Redux je malá knihovná, která má jednoduché omezené API, které je navrženo tak, aby bylo předvídatelným kontejnerem pro aplikační stav. Funguje podobně jako redukční funkce v konceptu funkčního programování. Vývoj byl ovlivněn programovacím jazykem postaveným na paradigmatu funkčního programování Elm.

Silné stránky Reduxu

  • Předvídatelnost a jednoduchost.
  • Jednosměrný tok dat a nemutovatelnost.
  • Oddělení dat od prezentace.
  • Rozšiřitelnost.
  • Oblíbenost a komunita.
  • Podpora nástrojů.

Slabé stránky Reduxu

  • Absence vhodného nástroje na řešení vedlejších účinků. Podobné nástroje jsou dostupné jen jako middleware jako je například redux-thunk nebo redux-saga.
  • Akce jsou oddělené od svých důsledků.

Kdy používat

Pokud se jedná o progresivní aplikaci, která má ambice stát se střední nebo velkou aplikací, je pravděpodobné, že Redux uplatníte. U menších aplikací můžete narazit na to, že:

  • Je jen málo rodinných vztahů a
  • Sdílení dat mezi různými komponentami není příliš rozšířené.

Proto je použití lokálního stavu zcela bezproblémové.

Pokud se však jedná o větší aplikaci, podobná struktura by nesla následující nevýhody:

  • Pokud dvě komponenty vyžadují společná data, musí tato data být přesunuta k nejbližšímu nadřazenému prvku. To může vést k nežádoucím datům v nesouvisejících komponentách.
  • V některých případech může dojít ke vzniku nadřazeného prvku jen z důvodu předávání dat a v tu chvíli je narušen vztah v aplikační struktuře.
  • Je obtížné opravovat chyby.

Co je ještě potřeba zvážit?

Pokud se rozhodnete pro využití Reduxu pro svou aplikaci, možná budete mít pocit, že byste měli všechna aplikační data ukládat v Reduxu, což není tak úplně pravda. V některých případech je i tak vhodnější použít lokální proměnnou. Obecně pokud jsou data méně důležitá nebo nejsou potřeba pro více než jednu komponentu, je praktičtější je ukládat v lokálním stavu.