1 00:00:02,640 --> 00:00:06,640 Ceci conclut la partie des recettes préférées, maintenant il est temps de 2 00:00:06,690 --> 00:00:12,270 nous assurer que nous filtrons réellement nos recettes parce que gardez à l'esprit dans l'écran des repas de 3 00:00:12,330 --> 00:00:17,260 catégorie, nous récupérons en fait nos repas filtrés de notre état et maintenant bien sûr 4 00:00:17,370 --> 00:00:24,870 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 5 00:00:24,870 --> 00:00:26,880 je veux changer comme prochaine étape. 6 00:00:29,310 --> 00:00:35,910 Encore une fois, commençons par ajouter une action appropriée qui commence par ajouter un identifiant que j'exporte ici 7 00:00:35,910 --> 00:00:43,830 et je vais nommer cet ensemble de filtres et définir des filtres ici aussi sous forme de texte et créer une fonction 8 00:00:43,830 --> 00:00:47,150 de créateur d'action appropriée définir des filtres et ici 9 00:00:47,190 --> 00:00:53,550 je m'attends à obtenir un argument avec mes paramètres de filtre, qui devrait être un objet à 10 00:00:53,580 --> 00:00:57,730 la fin avec les données isGlutenFree, isLactoseFree, isVegan et isVegetarian et 11 00:00:57,730 --> 00:01:05,040 je retournerai un objet d'action où le type de cours est défini par des filtres, donc cet identifiant et ensuite 12 00:01:05,520 --> 00:01:12,000 le filtres, c'est mon objet de paramètres de filtre, donc cet objet avec toutes les valeurs vraies ou 13 00:01:12,000 --> 00:01:15,030 fausses pour les quatre critères de filtrage différents 14 00:01:15,030 --> 00:01:17,880 que nous avons. C'est le créateur 15 00:01:17,880 --> 00:01:24,900 d'action, maintenant que devons-nous faire dans le réducteur? Dans le réducteur, nous devons maintenant gérer ce 16 00:01:24,900 --> 00:01:30,950 nouveau cas, donc ici, par défaut, je vais ajouter le cas où je gère les filtres 17 00:01:30,950 --> 00:01:38,900 définis et pour cela, vous devez importer l'identifiant des filtres définis à partir des actions de repas et dans les 18 00:01:38,900 --> 00:01:47,580 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. 19 00:01:47,590 --> 00:01:53,350 Maintenant, gardez à l'esprit que cela contenait en fait une clé 20 00:01:53,350 --> 00:02:04,630 de filtres qui, à la fin, sera un objet Javascript qui a quelque chose comme glutenFree: true, lactoseFree: false et nous voulons 21 00:02:04,630 --> 00:02:15,090 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, 22 00:02:15,090 --> 00:02:16,770 c'est bien sûr une étape 23 00:02:16,830 --> 00:02:18,320 que vous pourriez 24 00:02:18,320 --> 00:02:22,730 laisser de côté, j'essaie juste d'écrire du code compréhensible qui parle de lui-même. 25 00:02:22,890 --> 00:02:27,990 Je suis donc en train d'extraire les filtres configurés par l'utilisateur et 26 00:02:27,990 --> 00:02:29,190 nous nous occuperons 27 00:02:29,190 --> 00:02:40,740 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 28 00:02:40,740 --> 00:02:46,470 les repas filtrés mais tous les repas disponibles et là, je veux les filtrer 29 00:02:46,470 --> 00:02:47,280 avec 30 00:02:47,280 --> 00:02:53,670 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 31 00:02:53,880 --> 00:02:55,470 que je ne veux pas modifier 32 00:02:55,470 --> 00:03:02,370 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 33 00:03:02,370 --> 00:03:08,850 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 34 00:03:08,850 --> 00:03:14,250 fonction, nous pouvons parcourir tous les filtres définis par l'utilisateur et vérifier si ce repas correspond à 35 00:03:14,250 --> 00:03:20,100 l'un des filtres et doit donc être supprimé ou s'il passe tous les filtres pour ainsi dire et 36 00:03:20,100 --> 00:03:21,240 devrait être conservé. 37 00:03:22,170 --> 00:03:29,460 Donc, ici, nous pouvons vérifier si les filtres. glutenFree et je m'attends simplement à ce que mes filtres, excusez-moi 38 00:03:29,460 --> 00:03:33,920 d'appliquer des filtres, que cet objet que je reçois ait une clé sans gluten. 39 00:03:34,290 --> 00:03:44,200 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 40 00:03:44,200 --> 00:03:51,220 sais que ce repas doit être abandonné, non? Parce qu'il n'est pas sans gluten mais j'ai un 41 00:03:51,220 --> 00:03:57,250 filtre qui devrait être sans gluten. Je vais donc retourner false et je ne me soucie 42 00:03:57,250 --> 00:03:58,540 pas des autres filtres 43 00:03:58,540 --> 00:04:06,220 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 44 00:04:06,310 --> 00:04:07,150 appliqués sans lactose. 45 00:04:07,150 --> 00:04:11,820 Si c'est vrai et que mon repas n'est pas sans lactose, 46 00:04:11,830 --> 00:04:17,260 même logique qu'auparavant avec les glutens, je peux retourner faux et le laisser tomber. 47 00:04:18,810 --> 00:04:29,370 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é 48 00:04:30,070 --> 00:04:34,930 les autres filtres mais si le repas n'est pas végétarien mais je cherche des 49 00:04:34,930 --> 00:04:40,990 plats végétariens , alors je devrais m'en débarrasser. Et enfin et surtout, des 50 00:04:40,990 --> 00:04:43,840 filtres appliqués. végétalien. 51 00:04:43,930 --> 00:04:51,980 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 52 00:04:52,220 --> 00:04:55,290 propriétés qui font partie de mes repas, si on 53 00:04:55,340 --> 00:05:01,550 regarde nos modèles, au repas, là nous avons isGlutenFree, isVegan et ainsi de suite en tant que propriétés sur chaque 54 00:05:01,640 --> 00:05:07,070 repas, donc chaque repas a les informations pour quels filtres qui devraient être inclus ou exclus, donc 55 00:05:07,070 --> 00:05:07,690 chaque 56 00:05:07,700 --> 00:05:10,940 repas a cela et je l'utilise ici dans le réducteur. 57 00:05:11,000 --> 00:05:18,170 Donc donc ici dans le cas végétalien, je veux aussi retourner faux et seulement si je passe au-delà de tout cela 58 00:05:18,230 --> 00:05:26,420 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. 59 00:05:26,540 --> 00:05:30,830 Je suis toujours à l'intérieur de cette méthode de filtrage et je retourne vrai, ce 60 00:05:30,830 --> 00:05:38,390 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é 61 00:05:38,810 --> 00:05:45,140 ce tableau de repas filtrés, je dois retourner un nouvel état en copier l'ancien état, puis je veux remplacer mes repas 62 00:05:45,140 --> 00:05:51,740 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 63 00:05:51,740 --> 00:05:53,010 la propriété 64 00:05:53,060 --> 00:05:59,540 de l'objet d'état, donc essentiellement cette propriété et les repas filtrés à droite du côlon se réfèrent à 65 00:05:59,540 --> 00:06:00,830 cette constante, je peux 66 00:06:01,110 --> 00:06:06,890 également nommer ces repas filtrés mis à jour pour être plus clair à ce sujet. 67 00:06:06,940 --> 00:06:10,390 C'est ainsi que mon état est mis à jour lorsque les filtres sont définis. 68 00:06:10,390 --> 00:06:13,570 Maintenant, bien sûr, nous devons nous assurer que nous envoyons également cette action à terme.