O estado pode ser complexo e é importante entender isso para entender quais problemas as soluções de
gerenciamento de estado como o Redux realmente resolvem.
Se tivéssemos um aplicativo como este, que não é o aplicativo que criamos, mas que pode ser um aplicativo que
você está criando, onde você tem duas áreas diferentes, uma onde você gerencia seus usuários, onde os usuários
podem entrar, onde os usuários podem gerenciar seus painel, veja o painel deles, etc., e onde você
tem produtos em uma lista que
os usuários podem adicionar a um carrinho, essas áreas não são totalmente independentes, mas, no aplicativo, elas serão
renderizadas em telas diferentes, tão separadas de entre si.
Mas a questão de saber se um usuário está conectado e que você precisa aqui também pode
ser relevante em
outra parte do seu aplicativo. No momento, você normalmente precisa passar esses dados manualmente através de adereços, passando
do componente A para B para C para D até E onde você talvez precise
disso, isso não é realmente muito conveniente.
Em vez disso, você deseja ter uma configuração de aplicativo em que algo mude, por exemplo, um usuário faz login
ou em
nosso aplicativo de refeições, define um determinado filtro e salva e, em seguida, essas informações são propagadas para o seu aplicativo e
passadas automaticamente para os locais onde você precisa, mas não por meio de
adereços, mas com algum mecanismo nos bastidores que o ajuda a esse respeito e é aí que o Redux é
uma solução comum que usamos nos aplicativos React e React Native para gerenciar esse estado.
Agora, como o Redux funciona?
Antes de tudo, o Redux é uma biblioteca de terceiros que você pode adicionar ao React Native para
usá-lo lá e é tudo sobre ter um repositório central. O Redux introduz um armazenamento central na memória, não
um banco de dados, mas está na memória, na memória Javascript, para dizer onde está o estado do seu aplicativo,
para que os dados que dependem das diferentes partes do seu aplicativo possam ser armazenados e, quando estiver
em um componente,
você terá algo que deseja manipular esse estado, por exemplo, estamos definindo um
filtro ou marcando uma refeição como favorita, então despachamos uma ação chamada, que é um pacote de informações predefinidas que
você diria, tendo uma certa esquema que pode ser tratado pelo Redux conforme configurado por você.
Essa ação alcança o chamado redutor e você escreverá esse redutor como desenvolvedor, para poder
controlar que tipo de ação um redutor aceita, para que tipo de pacote de
informações o seu redutor exige e o redutor recebe a ação e o redutor. deriva um novo estado com
base no estado antigo que atualiza esse estado armazenado centralmente. Portanto, o redutor existe para atualizar
o estado no final.
E quando essa loja muda, quando o estado lá muda, você também pode ter assinaturas para essa loja
de outros componentes, essas assinaturas serão acionadas quando sua loja, quando seu estado lá mudar e
o estado atualizado for passado para os locais no seu aplicativo, para os
componentes que estão interessados nessas alterações, por exemplo, esse componente aqui
pode estar interessado em algumas atualizações. Bem, ele pode configurar uma assinatura e será
informado sobre a atualização e obter
o novo estado por meio de suas atualizações. adereços ou também com ganchos React, como você aprenderá neste módulo.
É assim que o Redux funciona e essa é a ideia por trás do Redux.
Agora, uma observação importante: se você está um pouco mais longe do React, provavelmente também conhece a API de contexto
do React, que está embutida no React.
Isso também pode ser usado para alguns bastidores e gerenciamento de dados, mas não é um bom substituto para todos os casos
de uso em que você usa o Redux.
Não vou me aprofundar nisso aqui, porque esse não é realmente um curso sobre as entradas e saídas de diferentes construções
do React. Em vez disso, queremos aprender o React Native aqui, mas em anexo, você encontrará alguns recursos que o ajudarão nessa comparação
entre a API do React Context e o Redux e quando usar qual. Neste módulo, usaremos o Redux, que é muito flexível, que
definitivamente podemos usar, e mostrarei como configurá-lo com o React Native e como
é claro que você pode trabalhar com ele.