Warum sind wiedermal die staatlichen Funktionen genannt Reduzierstücke?
Dies ist ein Teil der offiziellen Redux-Dokumentation:
Gibt es einen reducer, weil es ist die Art der Funktion, die Sie weitergeben würde
zuArray.prototype.reduce(reducer, ?initialValue)
Es macht nicht viel Sinn für mich. Könnte jemand mir erklären, warum Sie eigentlich genannt Reduzierstücke? Die Tatsache, dass Sie wieder einen default-Wert (oder Sie haben ein Standard-argument, Wert) macht Sie nicht Reduzier-IMHO.
- Sie sind Reduzierstücke, gerade weil Sie sich benehmen wie die Funktion Sie passieren zu
reduce
, die Zugang zu den default-Wert und einem anderen Wert, und gibt Sie zurück, Ihre möglicherweise verwandelt default-Wert.state -> action -> state
- eine rose von einem anderen Namen... wahrscheinlich marketing; map/reduce " ist ein buzzword-jetzt...
- das;s, warum Sie müssen beginnen zu denken, sich selbst und verlassen Sie sich nicht auf ein framework. Ein framwork ist meist von einem oder ein paar Entwickler mit Ihrer eigenen vision, wie ein problem zu lösen, angepasst von internet-Nutzern. Einige frameworks hast es aber meist nicht. blizz eines Kusses, die gleiche oder weniger ist keine Lösung. Dies ist nur ein Beispiel von vielen da draußen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Reduzierstücke nicht nur return default-Werte. Sie immer wieder die Akkumulation des Staates (bezogen auf alle früheren und aktuellen Aktionen).
Daher, Sie wirken wie ein reducer des Staates. Jedes mal, wenn ein redux reducer aufgerufen, den Staat übergeben wird, mit der Aktion
(state, action)
. Dieser Zustand ist dann reduziert (oder gesammelt), basierend auf die Aktion, und dann den nächsten Zustand zurückgegeben wird. Dies ist ein Zyklus der klassischenfold
oderreduce
Funktion.Als @azium fasste mit
state -> action -> state
.Wenn man die Reihe von Aktionen in Ihrer app an, wie eine Liste, oder vielleicht mehr wie ein Strom, es könnte mehr Sinn machen.
Nehmen Sie dieses erfundene Beispiel:
Das erste argument ist eine Funktion der form
(Int, String) => Int
. Zusammen mit einem ersten Wert übergeben Siereduce
was genannt werden könnte einen "Abschwächer-Funktion", und Sie erhalten das Ergebnis der Verarbeitung der Reihe von Elementen. So dass man sagen könnte, die reducer-Funktion beschreibt, was getan wird, mit jeder aufeinanderfolgenden einzelnen Element, das Ergebnis zu verändern. In anderen Worten, die reducer-Funktion übernimmt, die zuvor die Ausgabe und den nächsten Wert, und es berechnet die nächste Ausgabe.Dies ist Analog zu dem, was ein Redux reducer macht: es nimmt den vorherigen Zustand und die aktuelle Aktion, und es berechnen, in den nächsten Zustand.
In true funktionale Programmierung-Stil, können Sie konzeptionell löschen der Bedeutung angewendet, um die Argumente und das Ergebnis, und konzentrieren Sie sich nur auf die "Form" der ein-und Ausgabe.
In der Praxis Redux Reduzierstücke sind in der Regel orthogonal zueinander in dem Sinne, dass für eine gegebene Aktion, machen Sie nicht alle änderungen an der gleichen Eigenschaften, die es leicht macht, verteilen sich die Verantwortlichkeiten und aggregieren Sie die Ausgabe mit
combineReducers
.Wie bereits erwähnt, der name bezieht sich auf die Vorstellung von einem Reduzierstück in die funktionale Programmierung. Vielleicht finden Sie auch das Merriam-Webster Wörterbuch-definition von reducer hilfreich:
Der reducer fasst Aktionen in einem einzelnen Objekt, das den Zustand der Anwendung.
Wie? Um das zu beantworten, lassen Sie mich definieren einen Druckminderer wieder:
Und was macht ein redux reducer tun?
So ein
collection of actions
, die Reduzierung wird angewendet auf jeden Wert der Sammlung (von Links nach rechts). Das erste mal, gibt es dieinitial value
. Nun ist der Reduzierer angewendet wird, wieder auf diesen ersten Zustand und die erste Aktion, die Rückkehr am nächsten Stand. Und die nächste Kollektion Element (action) wird jedes mal angewendet auf diecurrent state
um dienext state
bis zum Ende des Arrays. Und dann bekommen Siethe final state
. Wie cool ist das!Den Autor denken Staates, wie der Akku der senken-Funktion. Ex:
Reduzieren " - Funktion aus der Funktionalen Programmierung, der name "reducer" ist auch aus der FP.
Ich nicht gerne mit diesem Namen hier. Weil ich nicht sehen die Welt als einen einzigen Wert Ergebnis nach Aktionen. Der Staat ist hier ein Objekt. Zum Beispiel:
Diese Reducer reduziert gar nichts. Und ich interessiere mich nicht, es zu reduzieren, etwas oder nicht. Die Namensgebung als Wandler wird mehr Sinn machen.
Wir wissen, wo die Reduzierstücke sind aus (funktionale Programmierung), und warum Sie betrachtet werden könnte dabei die Reduzierung der Arbeit (Verringerung des n-input-Elemente zu einem einzigen Wert zurück - das ist genau das, was normalen Funktionen sind supposted tun).
Allerdings: Der name ist nur ein name, wie rose ist der name für eine rose. Denken Sie nicht zu viel. Redux progammers sind ES die Menschen sind, sind Sie fest in Ihrem Umfeld und da macht es Sinn. Der rest von uns haben zu akzeptieren, der Erfinder der rechten Seite, um einen blauen Hund, der eine gelbe Katze 😉
Sie sollte nicht aufgerufen werden, reduzieren, verringern, bedeutet nicht, diese Funktionen meist mehr machen. und dann wieder
Ich konnte nicht Recht sehen, wie eine Redux reducer direkt zugeordnet, um die Funktion, die Sie verwenden, mit
reduce
, hier also ein paar Beispiele zu sehen, wie Sie übereinstimmen.Erste standard-reducer (genannt "Akku" in MDN) - Funktion aus der MDN-Array.reduzieren Dokumentation und dann ein Vereinfachtes Beispiel von Dan Abramov ist
Counter.js
am Ende seiner "Sie vielleicht nicht brauchen, Redux' blog-post.sum
fügt einen Wert in den Akkumulatorreducer
addiert/subtrahiert einen Wert zum/vom Akkumulator.In beiden Fällen ist hier der "Zustand" ist nur ein integer.
Du 'ansammeln' die Aktionen in den Staat. Dies ist auch die unveränderliche Art und Weise zu ändern, JavaScript-Objekt.
JS:
Anderen Antworten erklären auch, warum es heißt wie es ist, aber lassen Sie uns versuchen, mehr Dinge benennen...
Zunächst
reduce
genannt werden könnteuse anOperator with every action name and accumulated state, starting with origState
. In smalltalk es heißtactions inject: origState into: anOperator
.Aber was tun eigentlich Sie injizieren in die Betreiber? Die origState UND die action-Namen. So auch in Smalltalk-Methode-Namen sind nicht sehr klar.
actionOperators[increment]
ist ein Reduzierstück, aber ich würde lieber nennen es und actionOperator denn es ist implementiert für jede Aktion. Der Staat ist nur ein argument (und ein anderes als return-Wert).Reducer ist jedoch eines besseren Wortes an die Spitze der google-Suchergebnisse. Es ist auch ähnlich wie Redux.
Wie wäre es, wir nennen es Deducer von nun an. Es leitet den neuen Staat, basierend auf dem vorherigen Zustand und die eingehende Aktion.
In diesem folgenden code brauchen Sie nur zu denken, der Akku, wie die Aktionen und currentValue als ein Zustand, in redux Rahmen. mit diesem Beispiel finden Sie heraus, warum Sie nennen es als einen Druckminderer zu.
Die reduce() Methode führt eine reducer-Funktion (von Ihnen) auf
jedes element des Arrays, was in einem einzigen Ausgabe-Wert.