1 00:00:02,640 --> 00:00:06,640 Questo conclude la parte delle ricette preferite, ora è il momento 2 00:00:06,690 --> 00:00:12,270 di assicurarci che filtriamo effettivamente le nostre ricette perché tieni presente nella schermata dei pasti di 3 00:00:12,330 --> 00:00:17,260 categoria, stiamo effettivamente recuperando i nostri pasti filtrati dal nostro stato e proprio ora 4 00:00:17,370 --> 00:00:24,870 ovviamente nel nostro stato, quello filtrato pasti proprietà contiene sempre tutti i pasti e non cambia mai ed è qualcosa che 5 00:00:24,870 --> 00:00:26,880 voglio cambiare come prossimo passo. 6 00:00:29,310 --> 00:00:35,910 Ancora una volta, iniziamo aggiungendo un'azione appropriata che inizia aggiungendo un identificativo che esporto qui e nominerò 7 00:00:35,910 --> 00:00:43,830 questo set di filtri e imposterò i filtri anche qui come testo e creerò un filtro di set di funzioni creatore 8 00:00:43,830 --> 00:00:47,150 di azioni adatto e qui mi aspetto di 9 00:00:47,190 --> 00:00:53,550 ottenere un argomento con le mie impostazioni di filtro, che dovrebbe essere un oggetto alla fine 10 00:00:53,580 --> 00:00:57,730 con i dati isGlutenFree, isLactoseFree, isVegan e isVegetarian in esso e 11 00:00:57,730 --> 00:01:05,040 restituirò un oggetto azione in cui il tipo di corso è impostato filtri, quindi questo identificatore e quindi il 12 00:01:05,520 --> 00:01:12,000 filtri, questo è il mio oggetto impostazioni filtro, quindi questo oggetto con tutti i valori veri o 13 00:01:12,000 --> 00:01:15,030 falsi per i quattro diversi criteri di 14 00:01:15,030 --> 00:01:17,880 filtro che abbiamo. Questo è il 15 00:01:17,880 --> 00:01:24,900 creatore dell'azione, ora cosa dovremmo fare nel riduttore? Nel riduttore, ora dobbiamo gestire quel nuovo 16 00:01:24,900 --> 00:01:30,950 caso, quindi qui prima di default aggiungerò il caso in cui gestisco i 17 00:01:30,950 --> 00:01:38,900 set di filtri e per questo è necessario importare l'identificatore dei set di filtri dalle azioni dei pasti 18 00:01:38,900 --> 00:01:47,580 e nei set di filtri, il l'obiettivo ora ovviamente è aggiornare i nostri pasti filtrati per riflettere i filtri impostati. 19 00:01:47,590 --> 00:01:53,350 Ora tieni presente che in realtà conteneva una chiave di 20 00:01:53,350 --> 00:02:04,630 filtro che alla fine sarà un oggetto Javascript che ha qualcosa come glutenFree: true, lactoseFree: false e vogliamo riflettere 21 00:02:04,630 --> 00:02:15,090 queste impostazioni nel nostro array di pasti filtrati. Quindi qui, avrò i miei filtri applicati, diciamo dove estraggo semplicemente i filtri dalle azioni, 22 00:02:15,090 --> 00:02:16,770 questo è ovviamente un passo 23 00:02:16,830 --> 00:02:18,320 che potresti tralasciare, 24 00:02:18,320 --> 00:02:22,730 sto solo cercando di scrivere un codice comprensibile che parli da solo. 25 00:02:22,890 --> 00:02:27,990 Quindi sto solo estraendo i filtri impostati dall'utente e ci occuperemo 26 00:02:27,990 --> 00:02:29,190 di inviare questa 27 00:02:29,190 --> 00:02:40,740 azione più tardi e poi qui, imposterò i miei pasti filtrati, creerò una nuova costante di pasti filtrati in base ai miei pasti totali, quindi no 28 00:02:40,740 --> 00:02:46,470 i pasti filtrati ma tutti i pasti disponibili e lì, voglio filtrarli con 29 00:02:46,470 --> 00:02:47,280 il 30 00:02:47,280 --> 00:02:53,670 metodo di filtro integrato che Javascript offre. Filter restituisce sempre un array nuovo di zecca, il che è positivo 31 00:02:53,880 --> 00:02:55,470 perché non voglio ancora modificare 32 00:02:55,470 --> 00:03:02,370 alcun array esistente, voglio invece ottenere un nuovo array e che sarà un array in cui conserva tutti gli elementi per i quali passiamo questa funzione 33 00:03:02,370 --> 00:03:08,850 Il filtro restituisce true e rilascia tutti gli elementi in cui restituiamo false. Questa funzione verrà eseguita per ogni pasto e quindi ora 34 00:03:08,850 --> 00:03:14,250 in questa funzione, possiamo esaminare tutti i filtri impostati dall'utente e verificare se quel pasto corrisponde a 35 00:03:14,250 --> 00:03:20,100 uno qualsiasi dei filtri e pertanto deve essere eliminato o se passa tutti i filtri per così dire e 36 00:03:20,100 --> 00:03:21,240 dovrebbe essere tenuto. 37 00:03:22,170 --> 00:03:29,460 Quindi qui possiamo verificare se i filtri. glutenFree e mi aspetto semplicemente che i miei filtri, mi 38 00:03:29,460 --> 00:03:33,920 scusi, applichino i filtri, che questo oggetto che ottengo abbia una chiave senza glutine. 39 00:03:34,290 --> 00:03:44,200 Se questo è vero e il mio pasto non è privo di glutine e quindi devo aggiungere un punto esclamativo qui, allora so 40 00:03:44,200 --> 00:03:51,220 che questo pasto dovrebbe essere eliminato, giusto? Perché non è privo di glutine, ma ho un 41 00:03:51,220 --> 00:03:57,250 filtro che dovrebbe essere senza glutine. Quindi restituirò false e non mi interessa nessun 42 00:03:57,250 --> 00:03:58,540 altro filtro 43 00:03:58,540 --> 00:04:06,220 perché non corrisponde già a questo filtro, posso rilasciarlo. Se superiamo questo controllo, possiamo controllare il filtro successivo, senza filtri applicati 44 00:04:06,310 --> 00:04:07,150 senza lattosio. 45 00:04:07,150 --> 00:04:11,820 Se questo è vero e il mio pasto non è privo di 46 00:04:11,830 --> 00:04:17,260 lattosio, la stessa logica di prima con i glutini, posso restituire falso e lasciarlo cadere. 47 00:04:18,810 --> 00:04:29,370 Quindi, se controlla, se i filtri applicati sono vegetariani e il mio pasto non è vegetariano, quindi la stessa logica di prima, posso lasciarlo cadere perché potrei aver 48 00:04:30,070 --> 00:04:34,930 passato gli altri filtri ma se il pasto non è vegetariano ma sto 49 00:04:34,930 --> 00:04:40,990 cercando pasti vegetariani , allora dovrei liberarmene. E, ultimo ma non meno importante, i 50 00:04:40,990 --> 00:04:43,840 filtri applicati. vegano. 51 00:04:43,930 --> 00:04:51,980 Se sto cercando pasti vegani ma il mio pasto non è vegano qui e comunque, qui sto solo sfruttando tutte queste proprietà che fanno 52 00:04:52,220 --> 00:04:55,290 parte dei miei pasti, se diamo un'occhiata ai nostri 53 00:04:55,340 --> 00:05:01,550 modelli, al pasto, lì abbiamo isGlutenFree, isVegan e così via come proprietà di ogni singolo pasto, quindi ogni singolo 54 00:05:01,640 --> 00:05:07,070 pasto ha le informazioni per i filtri che dovrebbero essere inclusi o esclusi, quindi ogni pasto 55 00:05:07,070 --> 00:05:07,690 ha 56 00:05:07,700 --> 00:05:10,940 quello e sto solo usando questo qui nel riduttore. 57 00:05:11,000 --> 00:05:18,170 Quindi, qui nel caso vegano, voglio anche restituire false e solo se riesco a superare tutti questi 58 00:05:18,230 --> 00:05:26,420 controlli se so che ho un pasto che corrisponde a tutti i filtri impostati e lì per ora, posso tornare vero. 59 00:05:26,540 --> 00:05:30,830 Sono ancora all'interno di quel metodo di filtro e restituisco true, il che 60 00:05:30,830 --> 00:05:38,390 significa che voglio mantenere costante quel pasto nei miei pasti filtrati, che è il mio nuovo array e ora, dopo aver derivato questo array 61 00:05:38,810 --> 00:05:45,140 di pasti filtrati, devo restituire un nuovo stato di copiando il vecchio stato e quindi voglio sovrascrivere i miei pasti 62 00:05:45,140 --> 00:05:51,740 filtrati qui con i pasti filtrati che ho derivato qui. Quindi i pasti filtrati a sinistra del colon 63 00:05:51,740 --> 00:05:53,010 sono la 64 00:05:53,060 --> 00:05:59,540 proprietà dell'oggetto statale, quindi essenzialmente questa proprietà e i pasti filtrati sul lato destro del colon 65 00:05:59,540 --> 00:06:00,830 si riferiscono a questa 66 00:06:01,110 --> 00:06:06,890 costante, posso anche nominare questi pasti filtrati aggiornati per essere più chiari al riguardo. 67 00:06:06,940 --> 00:06:10,390 Ecco come viene aggiornato il mio stato quando vengono impostati i filtri. 68 00:06:10,390 --> 00:06:13,570 Ora, ovviamente, dobbiamo assicurarci di inviare anche questa azione alla fine.