Dan Abramov hat die neue Version von Facebooks React js 17 vorgestellt. Es gibt einige interessante Änderungen und neue Features zu entdecken.
React js 17 mit Fokus auf async rendering
Mit einem starken Fokus auf asynchrones Rendering versucht React 17 eine Umgebung zu schaffen, die es Entwicklern ermöglicht auf einfache Weise effiziente Anwendungen zu erstellen, indem es die Auswirkungen von Rechen- und Netzwerkgeschwindigkeiten auf das Benutzererlebnis minimiert.
Um dies zu erreichen, wird es unweigerlich eine Verschiebung in der Art und Weise der Schreibweise der React-Anwendungen geben. Die Einführung einiger neuer Funktionen und die Entfernung (deprecation) einiger früherer machen diesen Umstand unumgänglich.
Neue Lifecycle-Methoden in React js 17
Es gibt zwei neue Lifecycle-Methoden:
getDerivedStateFromProps
und getSnapShotBeforeUpdate
Diese solltet ihr beachten, wenn ihr euch darauf vorbereitet eure Anwendung auf React 17 umzustellen. Unsichere Methoden solltet ihr durch diese neuen Lifecycle-Methode ersetzen.
Beispielsweise kann componentWillUpdate
durch die Verwendung von getDerivedStateFromProps
in Verbindung mit shouldComponentUpdate
ersetzt werden. Auf componentWillMount
sollte für das asynchrone Rendern ganz verzichtet werden.
Die getDerivedStateFromProps
Methode
Diese Lifecycle-Methode ersetzt componentWillReceiveProps
und componentWillUpdate
und wird aufgerufen, nachdem eine Komponente erstellt wurde und wenn sie neue Properties erhalten hat. Sie gibt ein Objekt zurück, dessen Zustand aktualisiert werden soll. Wenn die Komponente nicht neu gerendert werden soll kann diese auch NULL
zurück geben.
state = { myProps: null };
static getDerivedStateFromProps(nextProps, prevState) {
return {
myProps: nextProps.myNewProps,
..
};
}
Diese Methode sollte jedoch nur dazu verwendet werden, wenn der Innere Zustand sich ändert. Ansonsten kann es zu Fehlfunktionen (bugs) führen.
Die getSnapshotBeforeUpdate
Methode
Diese Methode behandelt Komponentenaktualisierungen und wird componentWillUpdate
effektiv ersetzen und arbeitet mit componentDidUpdate
. Sie wird vor jeder DOM-Aktualisierung aufgerufen und gibt einen Wert zurück, der an componentDidUpdateDidUpdate
übergeben wird, sodass dann die Änderungen gehandhabt werden:
getSnapshotBeforeUpdate (prevProps, prevState) {
if (this.state.liste > prevState.liste) {
const listenRef = this.listenRef.current
return listenRef.scrollHeight - listenRef.scrollTop
}
return null
}
Die Präsentation der Neuen Features auf Youtube
Sobald die neue Version von React js veröffentlicht wird, werden wir die neuen Funktionen auch in unsere Übungsunterlagen aufnehmen. Diese Funktionen werden dann Teil der Schulungen, um euch ebenso auf dem neusten Stand zu halten.