To kończy ulubioną część przepisów, teraz nadszedł czas, aby
upewnić się, że faktycznie filtrujemy nasze przepisy, ponieważ należy pamiętać o ekranie kategorii posiłków,
w rzeczywistości odzyskujemy nasze przefiltrowane posiłki z naszego stanu i teraz oczywiście
w naszym stanie, który przefiltrował własność posiłków zawsze zawiera wszystkie posiłki i nigdy się nie zmienia, i to chcę
zmienić w następnym kroku.
Znowu zacznijmy od dodania odpowiedniej akcji, która zaczyna się od dodania identyfikatora, który eksportuję
tutaj, a nazwę tego zestawu filtrów i tutaj ustawię jako tekst, a także utworzę funkcję kreatora
dopasowanych akcji ustaw filtry i tutaj
spodziewam się otrzymam argument z moimi ustawieniami filtra, który powinien być obiektem na
końcu z danymi isGlutenFree, isLactoseFree, isVegan i isVegetarian, a
ja zwrócę obiekt akcji, w którym ustawiono typ kursu, więc ten identyfikator, a następnie filtry,
to mój obiekt ustawień filtrów, więc ten obiekt zawiera wszystkie prawdziwe lub fałszywe
wartości dla czterech różnych kryteriów filtrów,
które mamy. To jest
twórca akcji, co teraz zrobimy w reduktorze? W reduktorze musimy teraz obsłużyć
tę nową sprawę, więc tutaj domyślnie dodam przypadek, w którym obsługuję
ustawione filtry, a do tego musisz zaimportować identyfikator zestawu filtrów z akcji posiłków i
w ustawionych filtrach celem jest teraz oczywiście aktualizacja naszych filtrowanych posiłków, aby odzwierciedlić skonfigurowane filtry.
Teraz pamiętaj, że faktycznie zawierał on klucz filtrów,
który ostatecznie będzie obiektem Javascript, który ma coś w rodzaju glutenFree: true, lactoseFree: false i chcemy odzwierciedlić
te ustawienia w naszej tablicy filtrowanych posiłków. Więc tutaj, zastosuję filtry, powiedzmy, że po prostu wyodrębniam filtry z akcji,
to oczywiście krok, który
możesz pominąć,
próbuję tylko napisać zrozumiały kod, który mówi sam za siebie.
Po prostu wyodrębniam filtry ustawione przez użytkownika, a my zajmiemy
się wysyłaniem
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
posiłki, ale wszystkie dostępne posiłki i tam, chcę je filtrować za
pomocą
wbudowanej metody filtrowania, którą oferuje Javascript. Filtr zawsze zwraca zupełnie nową tablicę, co jest dobre, ponieważ nie
chcę jeszcze edytować żadnej
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ę
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
tej funkcji możemy przejść przez wszystkie ustawione przez użytkownika filtry i sprawdzić, czy ten posiłek pasuje do
któregoś z filtrów, a zatem powinien zostać upuszczony lub czy przejdzie przez wszystkie filtry, że tak powiem i
powinien być trzymanym.
Tutaj możemy sprawdzić, czy filtry. glutenFree i po prostu oczekuję, że moje filtry,
przepraszam, zastosuję filtry, że ten obiekt, który otrzymuję, ma klucz bezglutenowy.
Jeśli to prawda, a mój posiłek nie jest bezglutenowy i dlatego muszę tutaj dodać wykrzyknik, to wiem, że
ten posiłek powinien zostać porzucony, prawda? Ponieważ nie jest bezglutenowy, ale mam
filtr, który powinien być bezglutenowy. Zwrócę więc wartość false i nie przejmuję się
żadnymi innymi filtrami,
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
bez laktozy.
Jeśli to prawda, a mój posiłek nie jest wolny od laktozy,
ta sama logika jak wcześniej z glutenami, mogę zwrócić wartość fałszywą i upuścić ją.
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
przejść inne filtry, ale jeśli posiłek nie jest wegetariański, ale szukam wegetariańskich
posiłków , powinienem się tego pozbyć. I na koniec zastosowane
filtry. wegańskie.
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
właściwości, które są częścią moich posiłków, jeśli
spojrzymy na nasze modele, przy posiłku, tam mamy isGlutenFree, isVegan itd. jako właściwości każdego posiłku, więc
każdy posiłek zawiera informacje, dla których filtrów należy włączyć lub wyłączyć, więc każdy
posiłek
ma to i używam tego tutaj w reduktorze.
Dlatego tutaj, w przypadku wegańskiej, chcę również zwrócić wartość false i tylko jeśli przejdę to wszystko,
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ę.
Wciąż jestem w obrębie tej metody filtrowania i zwracam wartość true, co
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
wyprowadzeniu tej tablicy filtrowanych posiłków, muszę przywrócić nowy stan przez kopiując stary stan, a następnie chcę zastąpić moje
filtrowane posiłki tutaj filtrowanymi posiłkami, które tutaj wyprowadziłem. Tak przefiltrowane posiłki po lewej stronie jelita grubego
są właściwością
w obiekcie stanu, więc zasadniczo ta właściwość i przefiltrowane posiłki po prawej stronie jelita grubego
odnoszą się do
tej stałej, mogę też nazwać te zaktualizowane przefiltrowane posiłki, aby były bardziej zrozumiałe.
W ten sposób mój stan jest aktualizowany po ustawieniu filtrów.
Teraz oczywiście musimy upewnić się, że w końcu również wyślemy tę akcję.