1 00:00:02,640 --> 00:00:06,640 Isso conclui a parte das receitas favoritas, agora é hora 2 00:00:06,690 --> 00:00:12,270 de garantir que realmente filtremos nossas receitas, porque lembre-se da tela de categoria de refeições. 3 00:00:12,330 --> 00:00:17,260 Na verdade, estamos recuperando nossas refeições filtradas do nosso estado e agora, é claro, 4 00:00:17,370 --> 00:00:24,870 no nosso estado, que filtraram A propriedade refeições sempre mantém todas as refeições e nunca muda, e é algo que 5 00:00:24,870 --> 00:00:26,880 quero mudar como próximo passo. 6 00:00:29,310 --> 00:00:35,910 Novamente, vamos começar adicionando uma ação apropriada que comece adicionando um identificador que eu exporto aqui e 7 00:00:35,910 --> 00:00:43,830 nomearei esse conjunto de filtros e os definiremos aqui como um texto, além de criar uma função de criador de 8 00:00:43,830 --> 00:00:47,150 ação adequada, e aqui espero obter um argumento 9 00:00:47,190 --> 00:00:53,550 com minhas configurações de filtro, que deve ser um objeto no final, com os dados isGlutenFree, 10 00:00:53,580 --> 00:00:57,730 isLactoseFree, isVegan e isVegetarian e retornarei um objeto de ação 11 00:00:57,730 --> 00:01:05,040 em que o tipo de curso é definido como filtros, portanto, esse identificador e, em seguida, o filtros, esse 12 00:01:05,520 --> 00:01:12,000 é o meu objeto de configurações de filtro; portanto, esse objeto com todos os valores verdadeiros 13 00:01:12,000 --> 00:01:15,030 ou falsos dos quatro critérios de filtro 14 00:01:15,030 --> 00:01:17,880 diferentes que temos. Esse é o 15 00:01:17,880 --> 00:01:24,900 criador da ação, agora o que devemos fazer no redutor? No redutor, agora precisamos lidar com esse 16 00:01:24,900 --> 00:01:30,950 novo caso; portanto, antes do padrão, adicionarei o caso em que ligo os 17 00:01:30,950 --> 00:01:38,900 filtros de conjunto e, para isso, é necessário importar o identificador de filtros de conjunto das ações de 18 00:01:38,900 --> 00:01:47,580 refeições e nos filtros de conjunto, o agora, o objetivo é atualizar nossas refeições filtradas para refletir os filtros configurados. 19 00:01:47,590 --> 00:01:53,350 Agora, lembre-se de que isso realmente continha uma chave de 20 00:01:53,350 --> 00:02:04,630 filtros que, no final, será um objeto Javascript que possui algo como glutenFree: true, lactoseFree: false e queremos refletir 21 00:02:04,630 --> 00:02:15,090 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, é 22 00:02:15,090 --> 00:02:16,770 claro que isso é um 23 00:02:16,830 --> 00:02:18,320 passo que você pode 24 00:02:18,320 --> 00:02:22,730 deixar de fora, só estou tentando escrever um código compreensível que fale por si. 25 00:02:22,890 --> 00:02:27,990 Então, estou apenas extraindo os filtros configurados pelo usuário e cuidamos 26 00:02:27,990 --> 00:02:29,190 do envio 27 00:02:29,190 --> 00:02:40,740 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 28 00:02:40,740 --> 00:02:46,470 refeições filtradas, mas todas as refeições disponíveis e quero filtrá-las com o 29 00:02:46,470 --> 00:02:47,280 método 30 00:02:47,280 --> 00:02:53,670 de filtro interno que o Javascript oferece. O filtro sempre retorna um novo array, o que é bom, porque 31 00:02:53,880 --> 00:02:55,470 ainda não quero editar nenhum 32 00:02:55,470 --> 00:03:02,370 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 33 00:03:02,370 --> 00:03:08,850 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 34 00:03:08,850 --> 00:03:14,250 função, podemos passar por todos os filtros definidos pelo usuário e verificar se essa refeição corresponde a 35 00:03:14,250 --> 00:03:20,100 algum dos filtros e, portanto, deve ser descartada ou se passa por todos os filtros, por assim dizer e 36 00:03:20,100 --> 00:03:21,240 deve ser mantido. 37 00:03:22,170 --> 00:03:29,460 Então aqui podemos verificar se os filtros. glutenFree e eu simplesmente espero que meus filtros, com 38 00:03:29,460 --> 00:03:33,920 licença, apliquem filtros, que esse objeto que recebo tenha uma chave sem glúten. 39 00:03:34,290 --> 00:03:44,200 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 40 00:03:44,200 --> 00:03:51,220 sei que essa refeição deve ser descartada, certo? Porque não é sem glúten, mas eu tenho um 41 00:03:51,220 --> 00:03:57,250 filtro que deve ser sem glúten. Portanto, retornarei falso e não me importo com 42 00:03:57,250 --> 00:03:58,540 outros filtros, 43 00:03:58,540 --> 00:04:06,220 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 44 00:04:06,310 --> 00:04:07,150 sem lactose. 45 00:04:07,150 --> 00:04:11,820 Se isso for verdade e minha refeição não for isenta de 46 00:04:11,830 --> 00:04:17,260 lactose, a mesma lógica de antes com os glúten, posso retornar falso e descartá-lo. 47 00:04:18,810 --> 00:04:29,370 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 48 00:04:30,070 --> 00:04:34,930 nos outros filtros, mas se a refeição não for vegetariana, estou procurando refeições 49 00:04:34,930 --> 00:04:40,990 vegetarianas , então eu deveria me livrar disso. E por último mas não menos importante, 50 00:04:40,990 --> 00:04:43,840 filtros aplicados. vegano. 51 00:04:43,930 --> 00:04:51,980 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 52 00:04:52,220 --> 00:04:55,290 parte das minhas refeições, se dermos uma olhada em 53 00:04:55,340 --> 00:05:01,550 nossos modelos, na refeição, lá nós temos isGlutenFree, isVegan e assim por diante como propriedades em todas as refeições, 54 00:05:01,640 --> 00:05:07,070 para que cada refeição tenha as informações para quais filtros devem ser incluídos ou excluídos, portanto, cada 55 00:05:07,070 --> 00:05:07,690 refeição 56 00:05:07,700 --> 00:05:10,940 tem isso e eu estou usando isso aqui no redutor. 57 00:05:11,000 --> 00:05:18,170 Portanto, aqui no caso vegano, eu também quero retornar falso, e somente se eu passar por todas 58 00:05:18,230 --> 00:05:26,420 essas verificações, sei que tenho uma refeição que corresponde a todos os filtros que defini e, por enquanto, posso retornar true. 59 00:05:26,540 --> 00:05:30,830 Ainda estou dentro desse método de filtro e retorno true, o que significa 60 00:05:30,830 --> 00:05:38,390 que quero manter constante essa refeição em minhas refeições filtradas, que é minha nova matriz e agora, em geral, depois de derivar essa 61 00:05:38,810 --> 00:05:45,140 matriz de refeições filtradas, tenho que retornar um novo estado copiando o estado antigo e, em seguida, desejo substituir minhas 62 00:05:45,140 --> 00:05:51,740 refeições filtradas aqui pelas refeições filtradas que derivamos aqui. Portanto, refeições filtradas à esquerda dos dois pontos 63 00:05:51,740 --> 00:05:53,010 são a 64 00:05:53,060 --> 00:05:59,540 propriedade no objeto state, portanto, essencialmente, essa propriedade e as refeições filtradas no lado direito dos dois 65 00:05:59,540 --> 00:06:00,830 pontos se referem a 66 00:06:01,110 --> 00:06:06,890 essa constante. Também posso nomear essas refeições filtradas atualizadas para ficar mais claro sobre isso. 67 00:06:06,940 --> 00:06:10,390 É assim que meu estado é atualizado quando os filtros são definidos. 68 00:06:10,390 --> 00:06:13,570 Agora, é claro, precisamos garantir que também enviem essa ação eventualmente.