Engineer @ freshcells systems engineering GmbH / Düsseldorf • PHP / JS / MySQL Developer, Fokus auf Performance und Architektur • Java und Go, Elasticsearch und Redis • OSX, FreeBSD & Arch Linux
Komponente übergeben werden und unveränderlich sind (Dependency Injection, externe Konfiguration) • Properties “gehören” einem Elternelement • Properties in der aktuellen Komponente können Teil eines States der Elternkomponente sein
Komponente • Bei State Veränderungen zeichnet die Komponente selbstständig die von der Änderung betroffenen Teile des Markups neu • Komponenten == simple State Machine
gibt das gesamte Markup der Komponente zurück • Gehören zu dieser Komponente noch weitere, gekapselte Komponenten, werden diese im render() Rückgabewert referenziert.
… einen initialen Zustand zu setzen. • setState() verändert den internen Zustand und löst bei Bedarf ein Neuzeichnen der Komponente und der mit diesem Wert verbundenen Kind-Komponenten aus
DOM • Alle anstehenden Operationen werden erst in der in-memory Kopie bearbeitet • Dann wird versucht, den effizientesten Weg für die Anwendung auf dem “echten” DOM zu finden (Magic 1!11!!)
zu einer Ladeverzögerung bzw. einer Seite ohne Inhalt • JSON im HTML kann zur schnellen Initialisierung verwendet werden, behebt aber das SEO Problem nicht • HTML kann vollständig auf dem Server gerendert werden, React übernimmt später die Kontrolle – leider durch das Ersetzen des Inhaltes.
selbst gerenderten, direkten Kinder • Für eine Kommunikation zwischen Komponenten braucht man “Hilfe”. (z. B. einen event bus via EventEmitter2) • DOM-gebundene jQuery Events sind aus Effizienzgründen eine schlechte Idee
Handler können per React.initializeTouchEvents(true); aktiviert werden • Von mir bisher erfolgreich auf iOS 6/7 Safari und dem integrierten Android 4.3 Browser getestet
HTML und XML • Properties und States können direkt verwendet werden • Es gibt einen Node.js Compiler und ein Browser JIT Compiler Script (ähnlich wie z. B. less.js)
Support in IDEs und Editoren • IDEs reagieren meist seltsam (z. B. PHPStorm) • Die Fehlermeldungen des Watchers (Node.js) sind manchmal recht bescheiden