Questo conclude la parte delle ricette preferite, ora è il momento
di assicurarci che filtriamo effettivamente le nostre ricette perché tieni presente nella schermata dei pasti di
categoria, stiamo effettivamente recuperando i nostri pasti filtrati dal nostro stato e proprio ora
ovviamente nel nostro stato, quello filtrato pasti proprietà contiene sempre tutti i pasti e non cambia mai ed è qualcosa che
voglio cambiare come prossimo passo.
Ancora una volta, iniziamo aggiungendo un'azione appropriata che inizia aggiungendo un identificativo che esporto qui e nominerò
questo set di filtri e imposterò i filtri anche qui come testo e creerò un filtro di set di funzioni creatore
di azioni adatto e qui mi aspetto di
ottenere un argomento con le mie impostazioni di filtro, che dovrebbe essere un oggetto alla fine
con i dati isGlutenFree, isLactoseFree, isVegan e isVegetarian in esso e
restituirò un oggetto azione in cui il tipo di corso è impostato filtri, quindi questo identificatore e quindi il
filtri, questo è il mio oggetto impostazioni filtro, quindi questo oggetto con tutti i valori veri o
falsi per i quattro diversi criteri di
filtro che abbiamo. Questo è il
creatore dell'azione, ora cosa dovremmo fare nel riduttore? Nel riduttore, ora dobbiamo gestire quel nuovo
caso, quindi qui prima di default aggiungerò il caso in cui gestisco i
set di filtri e per questo è necessario importare l'identificatore dei set di filtri dalle azioni dei pasti
e nei set di filtri, il l'obiettivo ora ovviamente è aggiornare i nostri pasti filtrati per riflettere i filtri impostati.
Ora tieni presente che in realtà conteneva una chiave di
filtro che alla fine sarà un oggetto Javascript che ha qualcosa come glutenFree: true, lactoseFree: false e vogliamo riflettere
queste impostazioni nel nostro array di pasti filtrati. Quindi qui, avrò i miei filtri applicati, diciamo dove estraggo semplicemente i filtri dalle azioni,
questo è ovviamente un passo
che potresti tralasciare,
sto solo cercando di scrivere un codice comprensibile che parli da solo.
Quindi sto solo estraendo i filtri impostati dall'utente e ci occuperemo
di inviare questa
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
i pasti filtrati ma tutti i pasti disponibili e lì, voglio filtrarli con
il
metodo di filtro integrato che Javascript offre. Filter restituisce sempre un array nuovo di zecca, il che è positivo
perché non voglio ancora modificare
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
Il filtro restituisce true e rilascia tutti gli elementi in cui restituiamo false. Questa funzione verrà eseguita per ogni pasto e quindi ora
in questa funzione, possiamo esaminare tutti i filtri impostati dall'utente e verificare se quel pasto corrisponde a
uno qualsiasi dei filtri e pertanto deve essere eliminato o se passa tutti i filtri per così dire e
dovrebbe essere tenuto.
Quindi qui possiamo verificare se i filtri. glutenFree e mi aspetto semplicemente che i miei filtri, mi
scusi, applichino i filtri, che questo oggetto che ottengo abbia una chiave senza glutine.
Se questo è vero e il mio pasto non è privo di glutine e quindi devo aggiungere un punto esclamativo qui, allora so
che questo pasto dovrebbe essere eliminato, giusto? Perché non è privo di glutine, ma ho un
filtro che dovrebbe essere senza glutine. Quindi restituirò false e non mi interessa nessun
altro filtro
perché non corrisponde già a questo filtro, posso rilasciarlo. Se superiamo questo controllo, possiamo controllare il filtro successivo, senza filtri applicati
senza lattosio.
Se questo è vero e il mio pasto non è privo di
lattosio, la stessa logica di prima con i glutini, posso restituire falso e lasciarlo cadere.
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
passato gli altri filtri ma se il pasto non è vegetariano ma sto
cercando pasti vegetariani , allora dovrei liberarmene. E, ultimo ma non meno importante, i
filtri applicati. vegano.
Se sto cercando pasti vegani ma il mio pasto non è vegano qui e comunque, qui sto solo sfruttando tutte queste proprietà che fanno
parte dei miei pasti, se diamo un'occhiata ai nostri
modelli, al pasto, lì abbiamo isGlutenFree, isVegan e così via come proprietà di ogni singolo pasto, quindi ogni singolo
pasto ha le informazioni per i filtri che dovrebbero essere inclusi o esclusi, quindi ogni pasto
ha
quello e sto solo usando questo qui nel riduttore.
Quindi, qui nel caso vegano, voglio anche restituire false e solo se riesco a superare tutti questi
controlli se so che ho un pasto che corrisponde a tutti i filtri impostati e lì per ora, posso tornare vero.
Sono ancora all'interno di quel metodo di filtro e restituisco true, il che
significa che voglio mantenere costante quel pasto nei miei pasti filtrati, che è il mio nuovo array e ora, dopo aver derivato questo array
di pasti filtrati, devo restituire un nuovo stato di copiando il vecchio stato e quindi voglio sovrascrivere i miei pasti
filtrati qui con i pasti filtrati che ho derivato qui. Quindi i pasti filtrati a sinistra del colon
sono la
proprietà dell'oggetto statale, quindi essenzialmente questa proprietà e i pasti filtrati sul lato destro del colon
si riferiscono a questa
costante, posso anche nominare questi pasti filtrati aggiornati per essere più chiari al riguardo.
Ecco come viene aggiornato il mio stato quando vengono impostati i filtri.
Ora, ovviamente, dobbiamo assicurarci di inviare anche questa azione alla fine.