Damit ist der Teil mit den Lieblingsrezepten abgeschlossen. Jetzt ist
es an der Zeit, sicherzustellen, dass wir unsere Rezepte tatsächlich filtern, da wir im Bildschirm
"Kategorie Mahlzeiten" unsere gefilterten Mahlzeiten tatsächlich aus unserem Bundesstaat abrufen und im Moment
natürlich in unserem Bundesstaat, der gefiltert wurde Das Essenseigentum enthält immer alle Mahlzeiten und ändert sich nie. Das möchte ich
als nächsten Schritt ändern.
Beginnen wir noch einmal mit dem Hinzufügen einer geeigneten Aktion, die mit dem Hinzufügen eines Bezeichners
beginnt, den ich hier exportiere. Ich benenne diese Set-Filter und setze Filter auch hier als Text und erstelle einen
passenden Action-Creator-Set-Filter für Action Creator, den ich
hier erwarte Holen Sie sich ein Argument mit meinen Filtereinstellungen, das am Ende ein Objekt
mit den darin enthaltenen Daten isGlutenFree, isLactoseFree, isVegan und isVegetarian
sein sollte, und ich werde ein Aktionsobjekt zurückgeben, in dem der Kurstyp festgelegt ist, also diesen Bezeichner und
dann den Filter, das ist mein Filtereinstellungsobjekt, also dieses Objekt mit allen wahren oder falschen
Werten für die vier verschiedenen Filterkriterien, die
wir haben. Das ist der
Action-Schöpfer. Was sollen wir jetzt im Reduzierer tun? Im Reduzierer müssen wir jetzt diesen
neuen Fall behandeln, daher füge ich hier vor dem Standard den Fall
hinzu, in dem ich Set-Filter behandle, und dafür müssen Sie die Set-Filter-ID aus den Mahlzeitenaktionen und
in Set-Filtern importieren Ziel ist es nun natürlich, unsere gefilterten Mahlzeiten zu aktualisieren, um die eingerichteten Filter widerzuspiegeln.
Denken Sie jetzt daran, dass dies tatsächlich einen Filterschlüssel enthielt,
der am Ende ein Javascript-Objekt sein wird, das so etwas wie glutenfrei: wahr, laktosefrei: falsch enthält, und wir möchten diese
Einstellungen in unserem Array mit gefilterten Mahlzeiten widerspiegeln. Hier lassen Sie meine angewendeten Filter sagen, wo ich einfach die Filter aus den Aktionen extrahiere.
Das ist natürlich ein Schritt,
den Sie weglassen
könnten. Ich versuche nur, verständlichen Code zu schreiben, der für sich selbst spricht.
Ich extrahiere also nur die vom Benutzer eingerichteten Filter und wir
kümmern uns
darum, diese Aktion später auszulösen. Dann setze ich hier meine gefilterten Mahlzeiten und erstelle eine neue Konstante für gefilterte Mahlzeiten basierend auf meinen Gesamtmahlzeiten, also
nicht Die gefilterten Mahlzeiten, aber alle verfügbaren Mahlzeiten und dort möchte ich sie
mit
der integrierten Filtermethode filtern, die Javascript anbietet. Filter gibt immer ein brandneues Array zurück, was gut ist, da
ich noch kein vorhandenes Array
bearbeiten möchte. Stattdessen möchte ich ein neues Array erhalten. In diesem Array werden alle Elemente gespeichert, für die diese Funktion übergeben wird Der Filter gibt
true zurück und löscht alle Elemente, bei denen false zurückgegeben wird. Diese Funktion wird für jede Mahlzeit ausgeführt. In dieser
Funktion können wir nun alle vom Benutzer festgelegten Filter durchgehen und prüfen, ob diese Mahlzeit mit
einem der Filter übereinstimmt und daher gelöscht werden sollte oder ob sie sozusagen alle Filter besteht und
sollte gehalten werden.
Hier können wir also prüfen, ob Filter vorhanden sind. glutenfrei und ich erwarte einfach, dass meine Filter, entschuldigen
Sie, Filter anwenden, dass dieses Objekt, das ich bekomme, einen glutenfreien Schlüssel hat.
Wenn das stimmt und meine Mahlzeit nicht glutenfrei ist und ich daher hier ein Ausrufezeichen einfügen muss, dann weiß ich, dass
diese Mahlzeit fallen gelassen werden sollte, oder? Weil es nicht glutenfrei ist, aber ich habe einen
Filter, dass es glutenfrei sein sollte. Ich werde also false zurückgeben und kümmere mich nicht
um andere Filter,
da diese bereits nicht mit diesem Filter übereinstimmen. Ich kann sie löschen. Wenn wir es über diese Prüfung hinaus schaffen, können wir den nächsten Filter überprüfen, der
filterlaktosefrei angewendet wird.
Wenn das stimmt und meine Mahlzeit nicht laktosefrei ist, dieselbe Logik
wie zuvor mit den Glutens, kann ich falsch zurückkehren und sie fallen lassen.
Als nächstes, wenn überprüft, ob angewandte Filter vegetarisch eingestellt sind und meine Mahlzeit nicht vegetarisch ist, also dieselbe Logik wie zuvor, kann ich sie fallen lassen, weil ich möglicherweise die anderen
Filter bestanden habe, aber wenn die Mahlzeit nicht vegetarisch ist, aber ich nach vegetarischen
Mahlzeiten suche , dann sollte ich es loswerden. Und zu guter Letzt angewandte
Filter. vegan.
Wenn ich nach veganen Mahlzeiten suche, aber meine Mahlzeit hier und übrigens nicht vegan ist, nutze ich hier nur all diese Eigenschaften, die Teil
meiner Mahlzeiten sind, wenn wir uns unsere Modelle ansehen,
die Mahlzeit dort Wir haben isGlutenFree, isVegan und so weiter als Eigenschaften für jede einzelne Mahlzeit, sodass jede
einzelne Mahlzeit die Informationen enthält, für welche Filter sie eingeschlossen oder ausgeschlossen werden sollten. Jede Mahlzeit
hat
diese und ich verwende sie hier nur im Reduzierer.
Daher möchte ich hier im veganen Fall auch false zurückgeben, und nur wenn ich es über alle diese
hinaus schaffe, wenn ich weiß, dass ich eine Mahlzeit habe, die allen von mir eingestellten Filtern entspricht, kann ich true zurückgeben.
Ich bin immer noch in dieser Filtermethode und gebe true zurück, was bedeutet,
dass ich diese Mahlzeit in meinen gefilterten Mahlzeiten konstant halten möchte. Dies ist mein neues Array. Nachdem ich dieses Array gefilterter Mahlzeiten abgeleitet habe,
muss ich insgesamt einen neuen Status zurückgeben Kopieren Sie den alten Zustand und dann möchte ich meine gefilterten Mahlzeiten hier
mit den gefilterten Mahlzeiten überschreiben, die ich hier abgeleitet habe. Gefilterte Mahlzeiten auf der linken Seite des Doppelpunkts sind
also die
Eigenschaft im Statusobjekt. Daher bezieht sich diese Eigenschaft und die gefilterten Mahlzeiten auf der rechten Seite des
Doppelpunkts im Wesentlichen auf
diese Konstante. Ich kann diese aktualisierten gefilterten Mahlzeiten auch benennen, um dies klarer zu machen.
Auf diese Weise wird mein Status aktualisiert, wenn Filter festgelegt werden.
Jetzt müssen wir natürlich sicherstellen, dass wir diese Aktion auch irgendwann auslösen.