
1. Controllers
1.1. Responsabilidades
1.1.1. Acesso à store
1.1.1.1. useSelector
1.1.1.2. useContext
1.1.2. Chamadas aos services ou useCases
1.1.2.1. useEffect
1.1.2.2. useDispatch
1.1.3. Dispatch de actions
1.1.3.1. useDispatch
1.1.4. Declaração de eventos
1.1.4.1. onChange
1.1.4.2. onClick
1.1.4.3. onScroll
1.1.4.4. etc...
1.1.5. Memoização
1.1.5.1. useCallback
1.1.5.2. useMemo
1.2. Vantagens
1.2.1. Separation of concerns
1.2.2. Camada dedicada para domínios de negócio
1.2.3. Testes mais direcionados às regras de negócio
1.2.4. Menor acoplamento
1.2.5. Reuso de lógicas de negócio
2. Views
2.1. Responsabilidades
2.1.1. Lógica presentacional
2.1.1.1. Listagem
2.1.1.2. Conditional Rendering
2.1.1.3. children
2.1.1.4. useRef
2.1.2. Podem conter outros controllers
2.1.3. Isolar do gerenciamento de estado
2.1.4. Agnósticas aos detalhes de implementação
2.2. Vantagens
2.2.1. Funções puras
2.2.1.1. Representam única da interface, com base na mudanças de estados
2.2.2. Testes dedicados para estrutura visual
2.2.3. Redução de prop-drilling
2.2.4. Composição com outros controller