Um momento
Aula 09
Cursos / O Conceito de Seletor (Selector) - React & Redux
Criando Seletor para Selecionar Bandas Favoritas (Aula React & Redux)

Summary

Resumo da Aula sobre Selectores em React e Redux

Nesta aula, o instrutor revisita o conceito de selectores em um aplicativo React com Redux, focando na exibição de bandas favoritas em um componente de perfil.

Tópicos Abordados

  • Introdução ao Projeto: O aplicativo está sendo executado no localhost:3000, mostrando uma lista de todas as bandas disponíveis.

  • Estado Inicial: O estado inicial, definido no arquivo Reducers.js, possui uma propriedade perfil que contém bandasFavoritas, onde inicialmente apenas a banda Iron Maiden está listada.

  • Utilização de Selectores:

    • Anteriormente, um seletor de bandas foi reutilizado em diferentes componentes (lista de bandas e componente perfil).
    • Agora, é necessário criar um novo seletor (bandasFavoritasSelector) para buscar apenas as bandas favoritas.
  • Criação do Novo Seletor:

    • O novo seletor irá acessar state.perfil.bandasFavoritas.
    • Ele mapeará os IDs das bandas favoritas para os objetos correspondentes encontrando-os em state.bandas.bandas.
  • Desafio para os Alunos: O instrutor convida os alunos a pausarem o vídeo e implementarem o novo seletor em selectors.js.

  • Implementação:

    • É criada uma variável bandasFavoritasSelector para armazenar a nova função seletora.
    • O código exige que os IDs das bandas favoritas sejam mapeados para obter os objetos corretos.
  • Testes: Após implementar o seletor, o instrutor demonstra como importá-lo e utilizá-lo no componente de perfil, que agora renderiza somente as bandas favoritas corretamente.

Revisão Final

  • Resultados:
    • O componente perfil agora mostra apenas a lista de bandas favoritas.
    • O seletor bandasFavoritasSelector é semelhante ao seletor usado anteriormente, exceto que ele trabalha com uma lista diferente (bandas favoritas vs. lista geral).

A aula destaca a importância dos selectores em Redux para gerenciar e acessar dados de estado de maneira eficiente, reforçando o conceito de reutilização de código.

Video Transcript

Então pessoal, estamos de volta, mais uma aula sobre conceito de selectures com React e Redux. Vamos continuar o que a gente estava fazendo, temos aqui nosso aplicativo, estou rodando aqui no localhost 3000. Então temos a lista de bandas, que tem todas as bandas disponíveis. Temos o nosso perfil, que agora está mostrando todas as bandas, mas isso não está correto, porque se você olhar no nosso estado inicial do arquivo Reduces.js dentro do propriedade perfil, tem um objeto que tem outra propriedade chamada bandas favoritas. Essa é a lista de ideias das bandas favoritas. Nesse caso só tem uma que é a banda cujo ideia é um, dois, três. Um, dois, três seria Iron Maiden. Então a gente tem que ajeitar esse cara. Anteriormente a gente aprendeu a reutilizar o selector de bandas, e a gente usou no lista de bandas, aqui embaixo no map state props, quando dá o connect. A gente reutilizou o bandas selector no componente lista de bandas e no componente perfil, só para demonstrar que quando você tiver o estado do aplicativo mudar o caminho de onde os dados estão, você só precisa mudar o selector, em vez de ter que mudar todos os componentes que se referem àquele caminho, para aqueles dados. Então aqui vai ser um selector diferente para o perfil, para as bandas favoritas, porque o bandas selector se refere a a lista de todos os bandas, todos os objetos das bandas, em ordem definida pelo estado inicial, pelo reducer, propriedade lista, dentro do sub reducer bandas. Agora a gente vai fazer quase a mesma coisa, exceto que a nossa lista não vai ser essa lista geral, vai ser a nossa lista de bandas favoritas. Então para isso vamos aqui no perfil, para o JS, no final do arquivo perfil, onde você vai retornar propriedade de bandas favoritas, que vão ser injetadas no componente perfil, não vai ser mais o bandas selector, vai ser um selector que a gente vai criar, um novo selector, vamos chamar bandas favoritas selector. Então vamos criar esse selector bandas favoritas selector, essa função vai pegar o estado e vai retornar o objeto, ou objetos, uma lista de objetos com as nossas bandas favoritas, nesse caso, vai mapear um, dois, três para o objeto correspondente, um, dois, três, que é o Iron Maiden. Se tivesse mais de um, por exemplo, se tivesse também um, dois, dois, o próximo objeto seria esse aqui na lista. Tá bom? Então vamos lá, como desafio, eu quero que você pause o vídeo e faça o bandas favoritas selector, no arquivo selector, esse ponto JS, cria um novo selector aqui, bandas favoritas selector. Vai ser quase a mesma coisa do outro, é certo que você vai mudar a lista de ideias, vai ser uma lista diferente, vai ser a bandas favoritas, que está dentro do substado perfil. E aí, dá tudo certo? Vamos lá. Então vou criar uma variável chamada bandas favoritas selector, essa variável vai armazenar uma função, o parâmetro da função é o state, e antes de mais nada, vou mudar o export aqui para a gente poder disponibilizar esse selector em outros arquivos para ser importado. Então primeiro a gente vai precisar do quê? A gente tem a lista, né? Então a gente vai ver que está essa lista de bandas favoritas, está no state.que? ponto perfil, ponto bandas favoritas. Esse é o caminho para acessar os ideias das bandas favoritas, nossos bandas favoritas, vamos verificar no videoses.js, se realmente é o caso, estado.perfil.bandas favoritas, certo? Então a gente vai pegar os ideias, quando a gente se refere a esse caminho, é uma lista, um array vetor de ideias. Agora a gente precisa mapiar cada ideia para o objeto correspondente a esse ideia. Nesse caso a gente vai precisar acessar que propriedade do estado? A propriedade state.bandas.bandas. Aqui vai acessar esse objeto aqui. E a gente vai usar o ideia para poder acessar, por exemplo, nesse caso, um ideia 1, 2, 3, e chave para poder acessar esse objeto que a gente vai mapiar e injetar no componente perfil. Vamos lá? Então voltando aos seleitores post.js. Então a gente vai pegar esses bandas favoritos, mapiar cada ideia, né? Então vamos retornar o mapeamento e vai converter cada ideia na lista, vai fazer uma nova lista, os ideias vão se tornar objetos. A gente vai fazer o quê? Retornar, a gente vai precisar acessar aquele hash, que a gente chamou de bandas hash, por exemplo, a gente ainda não definiu nessa função, vai definir já já. A gente vai usar a chave o id da banda. E isso vai pegar e retornar o objeto da banda. Agora, para definir bandas hash, onde é que está esse cara? Vamos definir uma variável chamada bandas hash, vamos definir esse cara. Então está onde? Está no state.bandas.bandas, é a mesma coisa do outro aqui. Vamos ser notos que a gente já tem uma repetição, né? E a gente vai aprender já já, próxima aula, como a gente pode reutilizar esse código e fazer a chamada composição de seleitores. Então vamos salvar isso, vamos testar esse seleitor, voltando ao perfil.js. Estamos aqui no map.state.props, já escrevemos bandas favoritas de seleitor, mas não importamos. Vamos lá para o início do arquivo perfil.js e vamos dar o import. Não vai ser mais bandas seleitores, vai ser bandas favoritas seleitores, que a gente acabou de escrever. E from.barseleitores, o arquivo correto. Vamos salvar. Então só apareceu agora a IronMade, a gente já tinha definido a lógica de renderização da lista, usando a propriedade bandas favoritas, a gente só precisou mudar aqui embaixo a mudar o seleitor, que a propriedade já estava injetada, com o mesmo nome, bandas favoritas e a lógica já estava lá. Então a IronMade está aqui, tudo certo, tudo legal. Antes de a gente terminar essa aula, vamos revisar o que a gente fez. Então a gente conceptou a página do perfil para mostrar somente as nossas bandas favoritas. A gente criou um novo seleitor chamado bandas favoritas seleitores e a gente usou para adiantar propriedades bandas favoritas no componente perfil que a gente já tinha escrito, a lógica para renderizar essa lista. Então bandas favoritas seleitores, se a gente for no arquivo seleitores de js, é bem parecido com o bandas seleitores, usamos o mesmo hash para poder acessar aquele hash de objetos de bandas indexados pelo ID da banda, exceto que agora ele retorna o mapeamento dos IDs das bandas favoritas para cada objeto lá. Então a diferença somente é que a gente usou outra lista de IDs, a lista geral de todas as bandas, versus, no bandas favoritas seleitores, uma lista de IDs, somente os IDs das bandas que a gente gosta. A única diferença está aqui. Então por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: