Isso conclui a parte das receitas favoritas, agora é hora
de garantir que realmente filtremos nossas receitas, porque lembre-se da tela de categoria de refeições.
Na verdade, estamos recuperando nossas refeições filtradas do nosso estado e agora, é claro,
no nosso estado, que filtraram A propriedade refeições sempre mantém todas as refeições e nunca muda, e é algo que
quero mudar como próximo passo.
Novamente, vamos começar adicionando uma ação apropriada que comece adicionando um identificador que eu exporto aqui e
nomearei esse conjunto de filtros e os definiremos aqui como um texto, além de criar uma função de criador de
ação adequada, e aqui espero obter um argumento
com minhas configurações de filtro, que deve ser um objeto no final, com os dados isGlutenFree,
isLactoseFree, isVegan e isVegetarian e retornarei um objeto de ação
em que o tipo de curso é definido como filtros, portanto, esse identificador e, em seguida, o filtros, esse
é o meu objeto de configurações de filtro; portanto, esse objeto com todos os valores verdadeiros
ou falsos dos quatro critérios de filtro
diferentes que temos. Esse é o
criador da ação, agora o que devemos fazer no redutor? No redutor, agora precisamos lidar com esse
novo caso; portanto, antes do padrão, adicionarei o caso em que ligo os
filtros de conjunto e, para isso, é necessário importar o identificador de filtros de conjunto das ações de
refeições e nos filtros de conjunto, o agora, o objetivo é atualizar nossas refeições filtradas para refletir os filtros configurados.
Agora, lembre-se de que isso realmente continha uma chave de
filtros que, no final, será um objeto Javascript que possui algo como glutenFree: true, lactoseFree: false e queremos refletir
essas configurações em nossa matriz de refeições filtradas. Então, aqui, vou ter meus filtros aplicados, digamos onde eu simplesmente extraio os filtros das ações, é
claro que isso é um
passo que você pode
deixar de fora, só estou tentando escrever um código compreensível que fale por si.
Então, estou apenas extraindo os filtros configurados pelo usuário e cuidamos
do envio
dessa ação mais tarde. Aqui, definirei minhas refeições filtradas, criaremos uma nova constante de refeições filtradas com base no total de refeições, portanto não as
refeições filtradas, mas todas as refeições disponíveis e quero filtrá-las com o
método
de filtro interno que o Javascript oferece. O filtro sempre retorna um novo array, o que é bom, porque
ainda não quero editar nenhum
array existente. Em vez disso, desejo obter um novo array e esse será um array no qual manterá todos os itens para os quais passamos essa função
O filtro retorna true e descarta todos os itens nos quais retornamos false. Essa função será executada para cada refeição e, agora, nesta
função, podemos passar por todos os filtros definidos pelo usuário e verificar se essa refeição corresponde a
algum dos filtros e, portanto, deve ser descartada ou se passa por todos os filtros, por assim dizer e
deve ser mantido.
Então aqui podemos verificar se os filtros. glutenFree e eu simplesmente espero que meus filtros, com
licença, apliquem filtros, que esse objeto que recebo tenha uma chave sem glúten.
Se isso é verdade e minha refeição não é sem glúten e, portanto, eu preciso adicionar um ponto de exclamação aqui, então eu
sei que essa refeição deve ser descartada, certo? Porque não é sem glúten, mas eu tenho um
filtro que deve ser sem glúten. Portanto, retornarei falso e não me importo com
outros filtros,
porque ele já não corresponde a esse filtro, posso descartá-lo. Se ultrapassarmos essa verificação, podemos verificar o próximo filtro, os filtros aplicados
sem lactose.
Se isso for verdade e minha refeição não for isenta de
lactose, a mesma lógica de antes com os glúten, posso retornar falso e descartá-lo.
Em seguida, se verificar, se os filtros aplicados vegetarianos estiverem definidos e minha refeição não for vegetariana, com a mesma lógica de antes, posso descartá-la porque posso ter passado
nos outros filtros, mas se a refeição não for vegetariana, estou procurando refeições
vegetarianas , então eu deveria me livrar disso. E por último mas não menos importante,
filtros aplicados. vegano.
Se estou procurando refeições veganas, mas a minha refeição não é vegana aqui e, a propósito, aqui estou apenas aproveitando todas essas propriedades que fazem
parte das minhas refeições, se dermos uma olhada em
nossos modelos, na refeição, lá nós temos isGlutenFree, isVegan e assim por diante como propriedades em todas as refeições,
para que cada refeição tenha as informações para quais filtros devem ser incluídos ou excluídos, portanto, cada
refeição
tem isso e eu estou usando isso aqui no redutor.
Portanto, aqui no caso vegano, eu também quero retornar falso, e somente se eu passar por todas
essas verificações, sei que tenho uma refeição que corresponde a todos os filtros que defini e, por enquanto, posso retornar true.
Ainda estou dentro desse método de filtro e retorno true, o que significa
que quero manter constante essa refeição em minhas refeições filtradas, que é minha nova matriz e agora, em geral, depois de derivar essa
matriz de refeições filtradas, tenho que retornar um novo estado copiando o estado antigo e, em seguida, desejo substituir minhas
refeições filtradas aqui pelas refeições filtradas que derivamos aqui. Portanto, refeições filtradas à esquerda dos dois pontos
são a
propriedade no objeto state, portanto, essencialmente, essa propriedade e as refeições filtradas no lado direito dos dois
pontos se referem a
essa constante. Também posso nomear essas refeições filtradas atualizadas para ficar mais claro sobre isso.
É assim que meu estado é atualizado quando os filtros são definidos.
Agora, é claro, precisamos garantir que também enviem essa ação eventualmente.