Wenn Sie die Reihe von Aktionen in Ihrer App als eine Liste oder eher als einen Stream betrachten, ist dies möglicherweise sinnvoller.
Nehmen Sie dieses erfundene Beispiel:
['apple', 'banana', 'cherry'].reduce((acc, item) => acc + item.length, 0)
Das erste Argument ist eine Funktion des Formulars (Int, String) => Int
. Zusammen mit einem Anfangswert übergeben Siereduce
eine sogenannte "Reduzierungsfunktion" und erhalten das Ergebnis der Verarbeitung der Artikelserie. Man könnte also sagen, dass die Reduzierungsfunktion beschreibt, was mit jedem einzelnen Element getan wird, um das Ergebnis zu ändern. Mit anderen Worten, die Reduzierungsfunktion nimmt die vorherige Ausgabe und den nächsten Wert und berechnet die nächste Ausgabe.
Dies ist analog zu dem, was ein Redux-Reduzierer tut: Er nimmt den vorherigen Zustand und die aktuelle Aktion an und berechnet den nächsten Zustand.
Im echten funktionalen Programmierstil können Sie die Bedeutung der Argumente und des Ergebnisses konzeptionell löschen und sich nur auf die "Form" der Ein- und Ausgaben konzentrieren.
In der Praxis sind Redux-Reduzierer in der Regel orthogonal, da sie für eine bestimmte Aktion nicht alle Änderungen an denselben Eigenschaften vornehmen, wodurch es einfach ist, ihre Verantwortlichkeiten aufzuteilen und die Ausgabe mit zu aggregieren combineReducers
.
reduce
, die Zugriff auf den Standardwert und einen anderen Wert hat und Ihnen Ihren potenziell transformierten Standardwert zurückgibt.state -> action -> state