Ceci conclut la partie des recettes préférées, maintenant il est temps de
nous assurer que nous filtrons réellement nos recettes parce que gardez à l'esprit dans l'écran des repas de
catégorie, nous récupérons en fait nos repas filtrés de notre état et maintenant bien sûr
dans notre état, qui a filtré la propriété de repas détient toujours tous les repas et ne change jamais et c'est quelque chose que
je veux changer comme prochaine étape.
Encore une fois, commençons par ajouter une action appropriée qui commence par ajouter un identifiant que j'exporte ici
et je vais nommer cet ensemble de filtres et définir des filtres ici aussi sous forme de texte et créer une fonction
de créateur d'action appropriée définir des filtres et ici
je m'attends à obtenir un argument avec mes paramètres de filtre, qui devrait être un objet à
la fin avec les données isGlutenFree, isLactoseFree, isVegan et isVegetarian et
je retournerai un objet d'action où le type de cours est défini par des filtres, donc cet identifiant et ensuite
le filtres, c'est mon objet de paramètres de filtre, donc cet objet avec toutes les valeurs vraies ou
fausses pour les quatre critères de filtrage différents
que nous avons. C'est le créateur
d'action, maintenant que devons-nous faire dans le réducteur? Dans le réducteur, nous devons maintenant gérer ce
nouveau cas, donc ici, par défaut, je vais ajouter le cas où je gère les filtres
définis et pour cela, vous devez importer l'identifiant des filtres définis à partir des actions de repas et dans les
filtres définis, le L'objectif maintenant est bien sûr de mettre à jour nos plats filtrés pour refléter les filtres mis en place.
Maintenant, gardez à l'esprit que cela contenait en fait une clé
de filtres qui, à la fin, sera un objet Javascript qui a quelque chose comme glutenFree: true, lactoseFree: false et nous voulons
refléter ces paramètres dans notre tableau de repas filtrés. Donc ici, je vais avoir mes filtres appliqués, disons où j'extrais simplement les filtres des actions,
c'est bien sûr une étape
que vous pourriez
laisser de côté, j'essaie juste d'écrire du code compréhensible qui parle de lui-même.
Je suis donc en train d'extraire les filtres configurés par l'utilisateur et
nous nous occuperons
d'envoyer cette action plus tard, puis ici, je vais définir mes repas filtrés, créer une nouvelle constante de repas filtrés en fonction de mon total de repas, donc pas
les repas filtrés mais tous les repas disponibles et là, je veux les filtrer
avec
la méthode de filtrage intégrée proposée par Javascript. Le filtre renvoie toujours un tout nouveau tableau, ce qui est bien parce
que je ne veux pas modifier
de tableau existant pour l'instant, je veux obtenir un nouveau tableau à la place et ce sera un tableau où il conservera tous les éléments pour lesquels cette fonction nous
passons le filtre renvoie vrai et supprime tous les éléments où nous retournons faux. Cette fonction s'exécutera pour chaque repas et maintenant dans cette
fonction, nous pouvons parcourir tous les filtres définis par l'utilisateur et vérifier si ce repas correspond à
l'un des filtres et doit donc être supprimé ou s'il passe tous les filtres pour ainsi dire et
devrait être conservé.
Donc, ici, nous pouvons vérifier si les filtres. glutenFree et je m'attends simplement à ce que mes filtres, excusez-moi
d'appliquer des filtres, que cet objet que je reçois ait une clé sans gluten.
Si c'est vrai et que mon repas n'est pas sans gluten et que je dois donc ajouter un point d'exclamation ici, alors je
sais que ce repas doit être abandonné, non? Parce qu'il n'est pas sans gluten mais j'ai un
filtre qui devrait être sans gluten. Je vais donc retourner false et je ne me soucie
pas des autres filtres
car il ne correspond déjà pas à ce filtre, je peux le supprimer. Si nous le dépassons si nous vérifions, nous pouvons vérifier le filtre suivant, les filtres
appliqués sans lactose.
Si c'est vrai et que mon repas n'est pas sans lactose,
même logique qu'auparavant avec les glutens, je peux retourner faux et le laisser tomber.
Ensuite si check, si les filtres végétariens appliqués sont définis et que mon repas n'est pas végétarien, donc même logique qu'avant, je peux le laisser tomber car j'aurais peut-être passé
les autres filtres mais si le repas n'est pas végétarien mais je cherche des
plats végétariens , alors je devrais m'en débarrasser. Et enfin et surtout, des
filtres appliqués. végétalien.
Si je recherche des repas végétaliens mais mon repas n'est pas végétalien ici et au fait, ici je ne fais que mettre à profit toutes ces
propriétés qui font partie de mes repas, si on
regarde nos modèles, au repas, là nous avons isGlutenFree, isVegan et ainsi de suite en tant que propriétés sur chaque
repas, donc chaque repas a les informations pour quels filtres qui devraient être inclus ou exclus, donc
chaque
repas a cela et je l'utilise ici dans le réducteur.
Donc donc ici dans le cas végétalien, je veux aussi retourner faux et seulement si je passe au-delà de tout cela
si je vérifie que j'ai un repas qui correspond à tous les filtres que j'ai définis et là pour l'instant, je peux retourner vrai.
Je suis toujours à l'intérieur de cette méthode de filtrage et je retourne vrai, ce
qui signifie que je veux garder ce repas dans mes repas filtrés constant, qui est mon nouveau tableau et maintenant dans l'ensemble après avoir dérivé
ce tableau de repas filtrés, je dois retourner un nouvel état en copier l'ancien état, puis je veux remplacer mes repas
filtrés ici par les repas filtrés que j'ai dérivés ici. Donc, les repas filtrés à gauche du côlon sont
la propriété
de l'objet d'état, donc essentiellement cette propriété et les repas filtrés à droite du côlon se réfèrent à
cette constante, je peux
également nommer ces repas filtrés mis à jour pour être plus clair à ce sujet.
C'est ainsi que mon état est mis à jour lorsque les filtres sont définis.
Maintenant, bien sûr, nous devons nous assurer que nous envoyons également cette action à terme.