© S&S Media GmbH
Olis bunte Welt der IT

Wenn’s etwas weniger sein darf: React und Redux kombiniert


Redux, Reduktion, reduzieren, kleiner, weniger ... aber was? Arbeit? Das wäre gut. Funktionalität? Nicht so gut. Weniger ist oft mehr, das ist klar! Mal sehen, was Redux so kann ...

Der Name Redux hat mit „weniger“ und „kleiner“ nur bedingt zu tun, denn er lehnt sich an die Funktion reduce an, die im Umfeld funktionaler Programmierung schon seit Jahrzehnten der Aggregierung von Daten dient. Dabei geht es durchaus um Reduktion, aber im Sinne des französischen „Jus“, das Sie womöglich aus der Küche kennen: Flüssigkeiten werden konzentriert und im Volumen reduziert, während die leckeren Inhaltsstoffe erhalten bleiben. Redux arbeitet mit Reducern, also Funktionen, die der Reduktion dienen. Ach so. Na dann.

Im Kern geht es Zustandsverwaltung. Wir wissen, dass diese nicht einfach ist. Irgendwann war die mal einfach, als man sich für globale Variablen bei der Programmierung mit BASIC oder gar C noch nicht so sehr schämte wie heute. Aber die Erinnerung täuscht selbst hier gern: Letztlich war hauptsächlich deshalb alles einfacher, weil man im eingeschränkten Speicher der damaligen Computer sowieso nicht Programme derselben Komplexität bauen konnte, wie sie heute überall geschrieben werden. Sobald in umfangreichen Anwendungen State, also Zustandsinformation, verwaltet und zwischen verschiedenen Bestandteilen und Modulen koordiniert werden muss, wird die Sache ziemlich schwierig.

Zustand macht alles schwieriger

Seit vielen Jahren schreibe und rede ich selbst gern über die Vorzüge der funktionalen Idee beim Umgang mit State. Vielleicht haben Sie einmal eine meiner Präsentationen gesehen, in denen es um unveränderbare Daten ging. Solche Konzepte waren in C# umsetzbar, aber verursachten immer etwas zusätzlichen Aufwand beim Umgang mit Daten, weil in der statisch typisierten Umgebung von .NET nicht einfach ein vollwertiger Ersatz für Standardtypen erzeugt werden kann, der die Veränderung von Daten unmöglich macht.

In JavaScript ist der Umgang mit unveränderbaren Daten heute recht einfach. Ich benutze selbst gern das Paket seamless-immutable. Damit kann ich etwa ein unveränderbares Objekt so erzeugen:

const person = Immutable({ name: 'Oli', age: 23 });

Das geht auch mit Arrays und beliebig komplexen Daten, und seamless-immutable sorgt nun dafür, dass Properties und Array-Inhalte sich später nicht in-place ändern können.

Bei der praktischen Anwendung solcher Datentypen stellen sich nun einige Fragen. Eine der wichtigsten ist, wie mit der Tatsache umgegangen werden soll, d...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang