O Conceito de Seletores no Redux

Muitos aplicativos de React hoje em dia usam o Redux para a gestão dos dados do aplicativo.
Os dados são armazenados em uma única store, também chamada de Estado do Aplicativo. Essa entidade é, na maioria dos casos, nada mais nada menos que um simples objeto de JavaScript, com propriedades indexadas por uma chave e que tem um valor correspondente.
Normalmente o objeto do Estado é dividido em varias subseções, cada uma responsável, por exemplo, por um recurso diferente do aplicativo.
A função connect() do módulo de npm react-redux é normalmente usada para disponibilizar partes do Estado do Aplicativo via props passadas ao componente alvo.
Por exemplo:
1const mapStateToProps = state => {
2 return {
3 propriedade1: state.recurso1.propriedade1,
4 propriedade2: state.recurso2.propriedade2
5 };
6}
7
8connect(mapStateToProps)(MeuComponente);Para acessar propriedade1 e propriedade2, sempre temos que fornecer ao mapStateToProps o caminho para achar os dados: state.recurso1.propriedade1 e state.recurso2.propriedade2, respectivamente.
Vários componentes podem ter que requerir esses dados, então teríamos que escrever os caminhos de acesso numeras vezes.
Se um dos caminhos mudar, todos os componentes terão que ser atualizados com o novo caminho.
Para evitar isso, podemos criar seletores: simples funções que tomam o state como argumento, seguem o caminho requerido, e finalmente retornam os dados correspondentes:
1const propriedade1Seletor = (state) => {
2 return state.recurso1.propriedade1;
3}
4
5const propriedade2Seletor = (state) => {
6 return state.recurso2.propriedade2;
7}Esses seletores podem ser armazenados em um arquivo e exportados para todos os componentes que precisarem acessar a parte do Estado do Aplicativo correspondente ao seletor.
Partindo do exemplo anterior, um certo componente que precisasse acessar os dados propriedade1 e propriedade2 teria que usar:
1const mapStateToProps = state => {
2 return {
3 propriedade1: propriedade1Seletor(state),
4 propriedade2: propriedade2Seletor(state)
5 };
6}Agora se o caminho de cada recurso mudar, só é preciso mudar o código do seletor. Não precisa mudar nada nos componentes que usam o seletor. A lógica de percorrer o caminho para achar os dados está encapsulada na implementação do seletor.
Para aprender mais sobre seletores com React and Redux, assista às aulas no NBK Mundo Tech:
https://www.youtube.com/watch?v=Ud2lp4Hrb10&list=PLUbb2i4BuuzDC2mvVwiqokO2ReWb6qSYI&index=1
Leia a seguir

O Que É a Linguagem de Programação Rust? Um Guia Simples da Linguagem Rápida Que Não Deixa Você Travar
Um guia simples e sem jargões sobre o Rust, a linguagem tão rápida quanto o C que impede famílias inteiras de erros de memória antes de o programa rodar. Entenda a ideia de posse, por que gigantes da tecnologia o adotam e onde ele é usado.

O Que É a Linguagem de Programação Go? Um Guia Simples da Linguagem da Nuvem
Um guia simples e sem jargões sobre o Go, a linguagem simples e rápida que o Google criou para a nuvem. Entenda o que são goroutines, por que um programa Go é um arquivo só e como o Go passou a mover o Docker, o Kubernetes e boa parte da internet.

O Que É a Linguagem de Programação Ruby? Um Guia Simples da Linguagem Feita para a Felicidade
Um guia simples e sem jargões sobre o Ruby, a linguagem de programação feita para deixar os programadores felizes. Entenda por que o código Ruby parece inglês, como o Ruby on Rails move sites como GitHub e Shopify, e onde o Ruby brilha.
Comentários
Seja gentil e específico. Comentários com links de contas novas aparecem depois da análise de um moderador.