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.
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.
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:
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 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.