Nesta thread conceitual sobre o Redux, você aprenderá:
✅ O que é o Estado de uma aplicação
✅ O que é o Redux
✅ 3 Sinais de que você precisa dele
✅ Desvantagens em utilizá-lo
✅ Respostas de 3 dúvidas comuns sobre ele
Vem comigo! 🎉
🔥 Ontem, publiquei uma enquete sobre o Redux. Se você ainda não votou, dê um pulinho lá e volte.
É a forma em que a sua aplicação se encontra em um determinado momento no tempo.
Em momentos específicos do tempo, existem diferentes informações armazenadas em memória.
Essas informações são chamadas de State (Estado).
🔥 O que é o Redux?
O Redux é uma lib que armazena e facilita o gerenciamento de estados de uma aplicação JavaScript.
Ele te leva a centralizar o estado da aplicação em um só lugar, e possibilita que todos os componentes do projeto recebam esse estado atualizado.
🔥 Como o Redux armazena e gerencia estados?
Todo o estado da sua aplicação é contido e representado como um objeto JavaScript.
Para que isso aconteça de forma previsível, o Redux possui 3 princípios fundamentais.
🔥 O 1º princípio do Redux
🔴 Única fonte da verdade
Todo o estado da sua aplicação é armazenado em um objeto, dentro de uma única store.
Uma store é o container no qual o state da aplicação é armazenado.
Isso significa que em toda a aplicação, há um único lugar onde as informações de estado ficarão centralizadas.
Um único objeto de estado é utilizado para todos os componentes e páginas da aplicação.
🔥 O 2º princípio do Redux
🔴 O Estado é read-only
O Estado é apenas leitura, e deve ser modificado apenas através de 'actions', objetos que descrevem qual modificação está sendo feita.
🔥 O 3º princípio
🔴 Mudanças devem ser feitas apenas com funções puras
Para especificar como o estado é modificado pelas actions, você escreve reducers puros.
Reducers são funções puras que recebem, por parâmetro, o estado anterior, uma action, e retornam o novo state (ao invés de modificar, diretamente o state anterior).
☝️ Se você ainda não sabe o que são funções puras, escrevi uma thread focada nelas, em que você aprenderá, através de exemplos, o que elas são e como funcionam.
O link está nos últimos tweets =)
🔥 3 Sinais de que você precisa do Redux
🔵 Sua aplicação tem uma quantidade considerável de dados, e eles mudam frequentemente
🔵 Seria mais fácil trabalhar com todo o estado da aplicação centralizado em um só lugar (única fonte da verdade)
🔵 Você sente que manter todo o estado isolado da sua aplicação em um componente top-level, no React por exemplo, não é mais a abordagem ideal/suficiente
Exemplos de aplicações robustas que utilizam o Redux:
🔸 O website mobile do Twitter
🔸 O debugger do Firefox
🔸 O Hyper (terminal)
🔥 Desvantagens do Redux
O Redux não foi projetado para ser a maneira mais curta e rápida de se escrever código JavaScript.
Para que a atualização do estado aconteça, ele adiciona boilerplate e restrições em sua aplicação. E você terá que se esforçar para segui-las.
Você se dará bem com o Redux se aprender a descrever:
☑️ O state da sua aplicação através de objetos e arrays
☑️ As modificações do projeto através de objetos
☑️ A lógica das mudanças através de funções puras
🔥 Respostas de dúvidas comuns sobre o Redux
1⃣ O Redux só pode ser usado com o React?
Não. Embora seja incomum, por exemplo, ver Redux e JS puros em uma aplicação robusta em produção, é possível.
Para aplicações com o React, a lib usada é a react-redux.
Existem também bindings disponíveis para Angular, Angular 2, Vue, etc.
2⃣ Em quais ambientes o Redux pode ser implementado?
🔸 Client Side
🔸 Server Side
🔸 Native
E o mais interessante: é possível utilizar o mesmo código Redux entre plataformas, web/native, por exemplo.
A lógica de negócio é utilizada nos ambientes, sem compartilhar a mesma view =)
3⃣ É necessário ter alguma ferramenta de build para utilizar o Redux?
O uso do Redux independe do seu processo de build, e 👉não👈 requer Webpack, React, hot reloading, e ferramentas similares.
Quer que eu continue com essa série?
Então dê um 👉retweet👈, para que essa thread alcance mais pessoas e eu obtenha mais feedbacks e dúvidas, para planejar e publicar + conteúdo 😃
Linkei o início da thread ali em baixo, para facilitar =)
✅ Por que o Redux existe;
✅ Quais problemas ele resolve;
✅ Quais são as vantagens em utilizá-lo em uma aplicação;
Vem comigo! 👇
Ultimamente, tenho visto como algumas pessoas utilizam o redux em algumas aplicações e penso que um entendimento mais profundo sobre "por que o redux existe" traria ainda mais benefícios à esses projetos.
🔥 O padrão MVC
Nos últimos anos, estávamos presos ao MVC (Model-View-Controller).
Esse padrão era a forma em que isolávamos as responsabilidades de um app.
✅ O que é Blackboxing;
✅ Como utilizar breakpoints de listeners de eventos;
✅ Como utilizar a palavra-chave "debugger";
✅ E muito mais.
Vem debugar comigo! 👇
Investigar erros e debugar uma aplicação é uma habilidade a ser masterizada.
E essa habilidade está ligada ao seu modo de pensar. Ao seu processo resolver um problema inesperado no código.
Ao encontrar um bug, é comum que Desenvolvedores(as) mais novos, por exemplo, fiquem desconfortáveis e comecem a modificar partes do código, o que deixa a situação ainda mais complicada.