1 00:00:02,640 --> 00:00:06,640 To kończy ulubioną część przepisów, teraz nadszedł czas, aby 2 00:00:06,690 --> 00:00:12,270 upewnić się, że faktycznie filtrujemy nasze przepisy, ponieważ należy pamiętać o ekranie kategorii posiłków, 3 00:00:12,330 --> 00:00:17,260 w rzeczywistości odzyskujemy nasze przefiltrowane posiłki z naszego stanu i teraz oczywiście 4 00:00:17,370 --> 00:00:24,870 w naszym stanie, który przefiltrował własność posiłków zawsze zawiera wszystkie posiłki i nigdy się nie zmienia, i to chcę 5 00:00:24,870 --> 00:00:26,880 zmienić w następnym kroku. 6 00:00:29,310 --> 00:00:35,910 Znowu zacznijmy od dodania odpowiedniej akcji, która zaczyna się od dodania identyfikatora, który eksportuję 7 00:00:35,910 --> 00:00:43,830 tutaj, a nazwę tego zestawu filtrów i tutaj ustawię jako tekst, a także utworzę funkcję kreatora 8 00:00:43,830 --> 00:00:47,150 dopasowanych akcji ustaw filtry i tutaj 9 00:00:47,190 --> 00:00:53,550 spodziewam się otrzymam argument z moimi ustawieniami filtra, który powinien być obiektem na 10 00:00:53,580 --> 00:00:57,730 końcu z danymi isGlutenFree, isLactoseFree, isVegan i isVegetarian, a 11 00:00:57,730 --> 00:01:05,040 ja zwrócę obiekt akcji, w którym ustawiono typ kursu, więc ten identyfikator, a następnie filtry, 12 00:01:05,520 --> 00:01:12,000 to mój obiekt ustawień filtrów, więc ten obiekt zawiera wszystkie prawdziwe lub fałszywe 13 00:01:12,000 --> 00:01:15,030 wartości dla czterech różnych kryteriów filtrów, 14 00:01:15,030 --> 00:01:17,880 które mamy. To jest 15 00:01:17,880 --> 00:01:24,900 twórca akcji, co teraz zrobimy w reduktorze? W reduktorze musimy teraz obsłużyć 16 00:01:24,900 --> 00:01:30,950 tę nową sprawę, więc tutaj domyślnie dodam przypadek, w którym obsługuję 17 00:01:30,950 --> 00:01:38,900 ustawione filtry, a do tego musisz zaimportować identyfikator zestawu filtrów z akcji posiłków i 18 00:01:38,900 --> 00:01:47,580 w ustawionych filtrach celem jest teraz oczywiście aktualizacja naszych filtrowanych posiłków, aby odzwierciedlić skonfigurowane filtry. 19 00:01:47,590 --> 00:01:53,350 Teraz pamiętaj, że faktycznie zawierał on klucz filtrów, 20 00:01:53,350 --> 00:02:04,630 który ostatecznie będzie obiektem Javascript, który ma coś w rodzaju glutenFree: true, lactoseFree: false i chcemy odzwierciedlić 21 00:02:04,630 --> 00:02:15,090 te ustawienia w naszej tablicy filtrowanych posiłków. Więc tutaj, zastosuję filtry, powiedzmy, że po prostu wyodrębniam filtry z akcji, 22 00:02:15,090 --> 00:02:16,770 to oczywiście krok, który 23 00:02:16,830 --> 00:02:18,320 możesz pominąć, 24 00:02:18,320 --> 00:02:22,730 próbuję tylko napisać zrozumiały kod, który mówi sam za siebie. 25 00:02:22,890 --> 00:02:27,990 Po prostu wyodrębniam filtry ustawione przez użytkownika, a my zajmiemy 26 00:02:27,990 --> 00:02:29,190 się wysyłaniem 27 00:02:29,190 --> 00:02:40,740 tej akcji później, a następnie tutaj, ustawię moje filtrowane posiłki, utworzę nową stałą filtrowaną posiłki na podstawie moich całkowitych posiłków, więc nie filtrowane 28 00:02:40,740 --> 00:02:46,470 posiłki, ale wszystkie dostępne posiłki i tam, chcę je filtrować za 29 00:02:46,470 --> 00:02:47,280 pomocą 30 00:02:47,280 --> 00:02:53,670 wbudowanej metody filtrowania, którą oferuje Javascript. Filtr zawsze zwraca zupełnie nową tablicę, co jest dobre, ponieważ nie 31 00:02:53,880 --> 00:02:55,470 chcę jeszcze edytować żadnej 32 00:02:55,470 --> 00:03:02,370 istniejącej tablicy, chcę zamiast tego uzyskać nową tablicę i będzie to tablica, w której będą przechowywane wszystkie elementy, dla których przekazujemy tę funkcję 33 00:03:02,370 --> 00:03:08,850 filtr zwraca true i usuwa wszystkie elementy, dla których zwracamy false. Ta funkcja będzie działać dla każdego posiłku, a teraz w 34 00:03:08,850 --> 00:03:14,250 tej funkcji możemy przejść przez wszystkie ustawione przez użytkownika filtry i sprawdzić, czy ten posiłek pasuje do 35 00:03:14,250 --> 00:03:20,100 któregoś z filtrów, a zatem powinien zostać upuszczony lub czy przejdzie przez wszystkie filtry, że tak powiem i 36 00:03:20,100 --> 00:03:21,240 powinien być trzymanym. 37 00:03:22,170 --> 00:03:29,460 Tutaj możemy sprawdzić, czy filtry. glutenFree i po prostu oczekuję, że moje filtry, 38 00:03:29,460 --> 00:03:33,920 przepraszam, zastosuję filtry, że ten obiekt, który otrzymuję, ma klucz bezglutenowy. 39 00:03:34,290 --> 00:03:44,200 Jeśli to prawda, a mój posiłek nie jest bezglutenowy i dlatego muszę tutaj dodać wykrzyknik, to wiem, że 40 00:03:44,200 --> 00:03:51,220 ten posiłek powinien zostać porzucony, prawda? Ponieważ nie jest bezglutenowy, ale mam 41 00:03:51,220 --> 00:03:57,250 filtr, który powinien być bezglutenowy. Zwrócę więc wartość false i nie przejmuję się 42 00:03:57,250 --> 00:03:58,540 żadnymi innymi filtrami, 43 00:03:58,540 --> 00:04:06,220 ponieważ już nie pasuje do tego filtra, mogę go upuścić. Jeśli przejdziemy przez to, jeśli sprawdzimy, możemy sprawdzić następny filtr, zastosować filtry 44 00:04:06,310 --> 00:04:07,150 bez laktozy. 45 00:04:07,150 --> 00:04:11,820 Jeśli to prawda, a mój posiłek nie jest wolny od laktozy, 46 00:04:11,830 --> 00:04:17,260 ta sama logika jak wcześniej z glutenami, mogę zwrócić wartość fałszywą i upuścić ją. 47 00:04:18,810 --> 00:04:29,370 Następnie sprawdź, czy zastosowane filtry wegetariańskie są ustawione, a mój posiłek nie jest wegetariański, więc logika jest taka sama jak poprzednio, mogę go upuścić, ponieważ mogłem 48 00:04:30,070 --> 00:04:34,930 przejść inne filtry, ale jeśli posiłek nie jest wegetariański, ale szukam wegetariańskich 49 00:04:34,930 --> 00:04:40,990 posiłków , powinienem się tego pozbyć. I na koniec zastosowane 50 00:04:40,990 --> 00:04:43,840 filtry. wegańskie. 51 00:04:43,930 --> 00:04:51,980 Jeśli szukam wegańskich posiłków, ale mój posiłek nie jest wegański tutaj i przy okazji, tutaj po prostu wykorzystuję wszystkie te 52 00:04:52,220 --> 00:04:55,290 właściwości, które są częścią moich posiłków, jeśli 53 00:04:55,340 --> 00:05:01,550 spojrzymy na nasze modele, przy posiłku, tam mamy isGlutenFree, isVegan itd. jako właściwości każdego posiłku, więc 54 00:05:01,640 --> 00:05:07,070 każdy posiłek zawiera informacje, dla których filtrów należy włączyć lub wyłączyć, więc każdy 55 00:05:07,070 --> 00:05:07,690 posiłek 56 00:05:07,700 --> 00:05:10,940 ma to i używam tego tutaj w reduktorze. 57 00:05:11,000 --> 00:05:18,170 Dlatego tutaj, w przypadku wegańskiej, chcę również zwrócić wartość false i tylko jeśli przejdę to wszystko, 58 00:05:18,230 --> 00:05:26,420 jeśli kontrole Wiem, że mam posiłek, który pasuje do wszystkich filtrów, które ustawiłem i tam na razie, mogę zwrócić prawdę. 59 00:05:26,540 --> 00:05:30,830 Wciąż jestem w obrębie tej metody filtrowania i zwracam wartość true, co 60 00:05:30,830 --> 00:05:38,390 oznacza, że chcę utrzymać ten posiłek w moich filtrowanych posiłkach na stałym poziomie, co jest moją nową tablicą i teraz ogólnie po 61 00:05:38,810 --> 00:05:45,140 wyprowadzeniu tej tablicy filtrowanych posiłków, muszę przywrócić nowy stan przez kopiując stary stan, a następnie chcę zastąpić moje 62 00:05:45,140 --> 00:05:51,740 filtrowane posiłki tutaj filtrowanymi posiłkami, które tutaj wyprowadziłem. Tak przefiltrowane posiłki po lewej stronie jelita grubego 63 00:05:51,740 --> 00:05:53,010 są właściwością 64 00:05:53,060 --> 00:05:59,540 w obiekcie stanu, więc zasadniczo ta właściwość i przefiltrowane posiłki po prawej stronie jelita grubego 65 00:05:59,540 --> 00:06:00,830 odnoszą się do 66 00:06:01,110 --> 00:06:06,890 tej stałej, mogę też nazwać te zaktualizowane przefiltrowane posiłki, aby były bardziej zrozumiałe. 67 00:06:06,940 --> 00:06:10,390 W ten sposób mój stan jest aktualizowany po ustawieniu filtrów. 68 00:06:10,390 --> 00:06:13,570 Teraz oczywiście musimy upewnić się, że w końcu również wyślemy tę akcję.