Roger Melo JS Profile picture
Aug 22, 2019 25 tweets 4 min read Read on X
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.

Sua opinião é importante =)

👇

🔥 O que é o Estado de uma aplicação?

É 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 =)

Te vejo na próxima 🔥
P.s.: devido à problemas com o Twitter, tive que apagar a primeira publicação dessa thread e "repostá-la" 😕

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Roger Melo JS

Roger Melo JS Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @rogermelodev

Dec 2, 2019
Nessa thread, você aprenderá:

✅ 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.
Read 82 tweets
Nov 27, 2019
👇 Uma thread com as threads que já publiquei sobre JavaScript.

Espero que ajude você =D
Read 76 tweets
Nov 24, 2019
Nessa thread, você aprenderá:

✅ 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.
Read 42 tweets
Nov 17, 2019
Nessa thread, você aprenderá:

✅ Como pegar bugs antes de executar seu código;
✅ As 3 principais verificações que um linter executa;
✅ Como utilizar um linter em um projeto;

Vem comigo! 👇
🔥 O que é um linter?

Um linter é uma ferramenta responsável por analisar, de forma automatizada, o código fonte de uma aplicação e indicar bugs existentes nela.
Qual ferramenta de linter você utiliza em seus projetos?
Read 47 tweets
Nov 11, 2019
Nessa thread, você aprenderá:

✅ O que é Abstração;
✅ O que é Composição;
✅ Quais são as vantagens em abstrair e escrever código componível.

Vem comigo! 👇
A abstração é um conceito subestimado. Não costumamos pensar muito sobre abstrações enquanto programamos.

Considerando isso, vamos voltar ao básico por um momento e começar a pensar nos fundamentos desse conceito.
Afinal, abstração é um conceito mais denso e profundo do que podemos imaginar num primeiro momento.
Read 55 tweets
Nov 9, 2019
Nessa thread, você aprenderá:

✅ O que é o bind();
✅ Qual é a relação dele com o this;
✅ Como ele pode ser útil para você.

Vem comigo! 👇
Na thread passada (link nos últimos tweets), você aprendeu que o `this`:

1️⃣ Por default, referencia o objeto global do ambiente em que é executado;
2️⃣ Dentro de um método, referencia o próprio objeto no qual ele foi declarado;
Read 26 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(