Arquitetura Flux
Conceitos
O que é Redux?
- Biblioteca que implementa a Arquitetura Flux;
 - Controle de estados globais;
 - Quando utilizar o Redux?
- Meu estado tem mais de um "dono"?
 - Meu estado é manipulado por mais componentes?
 - As ações do usuário causam efeitos colaterais nos dados?
 
 - Exemplos: Carrinho de compras, dados do usuário, player de música, etc;
 
Arquitetura Flux
Exemplo gráfico
CATÁLOGO -> Action
Exemplo da Action:
{type: "ADD_TO_CART",product: { ... }}
Action -> Redux Store (Reducers) -> Mutação no estado
Princípios
- Toda action deve possuir um type;
 - O estado do Redux é o único ponto de verdade;
 - Não podemos mutar o estado do Redux sem uma action;
 - As actions e reducers são funções puras, ou seja, não lidam com side-effects assíncronos;
 - Qualquer lógica síncrona para regras de negócio deve ficar no reducer e nunca na action;
 - Nem toda aplicação precisa do Redux, inicie sem ele e sinta a necessidade depois;