Inhaltsverzeichnis
React 17 neuer Lebenszyklus
Heim Web-Frontend Front-End-Fragen und Antworten Was sind die neu hinzugefügten Lebenszyklen von React?

Was sind die neu hinzugefügten Lebenszyklen von React?

Mar 21, 2022 pm 06:28 PM
react 生命周期

Die neu hinzugefügten Lebenszyklen sind: 1. getDerivedStateFromProps, wird verwendet, um den Prozess der Aktualisierung des Requisitenstatus zu steuern; 2. getSnapshotBeforeUpdate, wird verwendet, um die neuesten DOM-Daten zu lesen;

Was sind die neu hinzugefügten Lebenszyklen von React?

Die Betriebsumgebung dieses Tutorials: Windows 7-System, Reaktionsversion 17.0.1, Dell G3-Computer.

Der Lebenszyklus ist beim Erlernen von React sehr wichtig. Sobald wir jede Komponente des Lebenszyklus verstanden haben, wird dies eine große Hilfe beim Schreiben von Hochleistungskomponenten sein.

Der React-Lebenszyklus ist in drei Zustände unterteilt: 1. Initialisierung 2. Update 3. Zerstörung

React 17 neuer Lebenszyklus

1. Abschaffung des Lebenszyklus

Das offizielle Website-Dokument weist darauf hin, dass Code, der diese Lebenszyklen verwendet, in Zukunft mit größerer Wahrscheinlichkeit Fehler produzieren wird Versionen von React, insbesondere für die asynchrone Rendering-Version

Aufgrund des asynchronen Rendering-Mechanismus wird in Zukunft die Life-Cycle-Hook-Funktion in Version 17 entfernt

ComponentWillMount

ComponentWillRecieveProps

ComponentWIllUpdate

2. Das Neue Lebenszyklus: Es ist keine Aktualisierung erforderlich. Geben Sie jedes Mal null zurück. Es wird vor dem Rendern aufgerufen, unabhängig von der ersten Bereitstellung oder nachfolgenden Aktualisierungen. Dies unterscheidet sich von „componentWillReceiveProps“ (es wird nur aufgerufen, wenn die übergeordnete Komponente ein erneutes Rendern verursacht). Ein einfaches Verständnis Status von Requisiten abrufen, die Funktion dieses Lebenszyklus Tatsächlich ist die Zuordnung der eingehenden Requisiten zum Status getDerivedStateFromProps eine statische Funktion, was bedeutet, dass diese Funktion nicht auf die Eigenschaften der Klasse zugreifen kann und dies nicht empfohlen wird Greifen Sie stattdessen direkt auf die Eigenschaften zu, und prevState wird verwendet, um den Zustand anhand der neu übergebenen Requisiten zu beurteilen. Wenn der von den Requisiten übergebene Inhalt keinen Einfluss auf Ihren Zustand haben muss Sie müssen einen Nullwert zurückgeben. Versuchen Sie also, ihn an das Ende der Funktion zu schreiben. Damit die Komponente vor der Änderung den aktuellen Wert erhalten kann, wird jeder von diesem Lebenszyklus zurückgegebene Wert durch „componentDidUpdate()“ ersetzt. Diese Funktion wird nach der Aktualisierung und vor der Aktualisierung des DOM aufgerufen. Es wird verwendet, um die neuesten DOM-Daten zu lesen. Der Rückgabewert wird als dritter Parameter von „componentDidUpdate“ verwendet, wenn die neuesten Rendering-Daten übermittelt werden. Er wird unmittelbar vor der Übergabe an das DOM aufgerufen, wodurch Sie die Daten abrufen können Die Daten der Komponente werden gespeichert, bevor sie sich ändern können Zyklusmethoden und im Konstruktor des gesamten Baums darunter,

Genau wie bei der Verwendung von Try Catch wird der Fehler nicht direkt ausgelöst, garantierte Verfügbarkeit der Anwendung)

getDerivedStateFromProps(nextProps, prevState)

用于替换componentWillReceiveProps,可以用来控制 props 更新 state 的过程;它返回一个对象表示新的 state;如果不需要更新,返回 null 即可

在每次渲染之前都会调用,不管初始挂载还是后面的更新都会调用,这一点和componentWillReceiveProps不同(只有当父组件造成重新渲染时才调用

简单的理解就说从props中获取state,这个生命周期的功能实际上就是将传入的props映射到state上面

getDerivedStateFromProps是一个静态函数,也就是这个函数不能通过this访问到class的属性,也并不推荐直接访问属性。而是应该通过参数提供的nextProps以及prevState来进行判断,根据新传入的props来映射到state

如果props传入的内容不需要影响到你的state,那么就需要返回一个null,这个返回值是必须的,所以尽量将其写到函数的末尾

static getDerivedStateFromProps(nextProps, prevState) {
    const {type} = nextProps;
    // 当传入的type发生变化的时候,更新state
    if (type !== prevState.type) {
        return {
            type,
        };
    }
    // 否则,对于state不进行任何操作
    return null;
}
Nach dem Login kopieren

getSnapshotBeforeUpdate()

在最近的更改被提交到DOM元素前,使得组件可以在更改之前获得当前值,此生命周期返回的任意值都会传给componentDidUpdate()。

用于替换 componentWillUpdate,该函数会在update后 DOM 更新前被调用,用于读取最新的 DOM 数据,返回值将作为 componentDidUpdate 的第三个参数

在最新的渲染数据提交给DOM前会立即调用,它让你在组件的数据可能要改变之前获取他们

componendDidCatch(error, info)

3. Grundlegende Verwendung

class A extends React.Component {
  // 用于初始化 state
  constructor() {}
  // 用于替换 `componentWillReceiveProps` ,该函数会在初始化和 `update` 时被调用
  // 因为该函数是静态函数,所以取不到 `this`
  // 如果需要对比 `prevProps` 需要单独在 `state` 中维护
  static getDerivedStateFromProps(nextProps, prevState) {}
  // 判断是否需要更新组件,多用于组件性能优化
  shouldComponentUpdate(nextProps, nextState) {}
  // 组件挂载后调用
  // 可以在该函数中进行请求或者订阅
  componentDidMount() {}
  // 用于获得最新的 DOM 数据
  getSnapshotBeforeUpdate() {}
  // 组件即将销毁
  // 可以在此处移除订阅,定时器等等
  componentWillUnmount() {}
  // 组件销毁后调用
  componentDidUnMount() {}
  // 组件更新后调用
  componentDidUpdate() {}
  // 渲染组件函数
  render() {}
}
Nach dem Login kopieren

[Verwandt Empfehlungen:Redis-Video-Tutorial]

Das obige ist der detaillierte Inhalt vonWas sind die neu hinzugefügten Lebenszyklen von React?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Leitfaden zur React-Front-End- und Back-End-Trennung: So erreichen Sie die Entkopplung und unabhängige Bereitstellung von Front-End und Back-End Sep 28, 2023 am 10:48 AM

React-Leitfaden zur Front-End- und Back-End-Trennung: So erreichen Sie die Front-End- und Back-End-Entkopplung und die unabhängige Bereitstellung. Es sind spezifische Codebeispiele erforderlich. In der heutigen Webentwicklungsumgebung ist die Front-End- und Back-End-Trennung zu einem Trend geworden. Durch die Trennung von Front-End- und Back-End-Code kann die Entwicklungsarbeit flexibler und effizienter gestaltet und die Zusammenarbeit im Team erleichtert werden. In diesem Artikel wird erläutert, wie Sie mithilfe von React eine Front-End- und Back-End-Trennung erreichen und so die Ziele der Entkopplung und unabhängigen Bereitstellung erreichen. Zuerst müssen wir verstehen, was Front-End- und Back-End-Trennung ist. Im traditionellen Webentwicklungsmodell sind Front-End und Back-End gekoppelt

So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ So erstellen Sie eine zuverlässige Messaging-App mit React und RabbitMQ Sep 28, 2023 pm 08:24 PM

So erstellen Sie eine zuverlässige Messaging-Anwendung mit React und RabbitMQ Einführung: Moderne Anwendungen müssen zuverlässiges Messaging unterstützen, um Funktionen wie Echtzeitaktualisierungen und Datensynchronisierung zu erreichen. React ist eine beliebte JavaScript-Bibliothek zum Erstellen von Benutzeroberflächen, während RabbitMQ eine zuverlässige Messaging-Middleware ist. In diesem Artikel wird erläutert, wie Sie React und RabbitMQ kombinieren, um eine zuverlässige Messaging-Anwendung zu erstellen, und es werden spezifische Codebeispiele bereitgestellt. RabbitMQ-Übersicht:

React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung React Router-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Sep 29, 2023 pm 05:45 PM

ReactRouter-Benutzerhandbuch: So implementieren Sie die Front-End-Routing-Steuerung Mit der Popularität von Single-Page-Anwendungen ist das Front-End-Routing zu einem wichtigen Bestandteil geworden, der nicht ignoriert werden kann. Als beliebteste Routing-Bibliothek im React-Ökosystem bietet ReactRouter umfangreiche Funktionen und benutzerfreundliche APIs, wodurch die Implementierung des Front-End-Routings sehr einfach und flexibel ist. In diesem Artikel wird die Verwendung von ReactRouter vorgestellt und einige spezifische Codebeispiele bereitgestellt. Um ReactRouter zuerst zu installieren, benötigen wir

Wie gehe ich mit der Zerstörung und dem Lebenszyklusmanagement von C++-Funktionszeigern um? Wie gehe ich mit der Zerstörung und dem Lebenszyklusmanagement von C++-Funktionszeigern um? Apr 17, 2024 pm 05:48 PM

In C++ erfordern Funktionszeiger eine ordnungsgemäße Zerstörung und Lebenszyklusverwaltung. Dies kann erreicht werden, indem der Funktionszeiger manuell zerstört und der Speicher freigegeben wird. Verwenden Sie intelligente Zeiger wie std::unique_ptr oder std::shared_ptr, um den Lebenszyklus von Funktionszeigern automatisch zu verwalten. Binden Sie den Funktionszeiger an das Objekt, und der Objektlebenszyklus verwaltet die Zerstörung des Funktionszeigers. Bei der GUI-Programmierung stellt die Verwendung intelligenter Zeiger oder die Bindung an Objekte sicher, dass Rückruffunktionen zum richtigen Zeitpunkt zerstört werden, wodurch Speicherlecks und Inkonsistenzen vermieden werden.

PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? Mar 15, 2024 pm 05:48 PM

PHP, Vue und React: Wie wählt man das am besten geeignete Frontend-Framework aus? Angesichts der kontinuierlichen Weiterentwicklung der Internettechnologie spielen Front-End-Frameworks eine wichtige Rolle bei der Webentwicklung. PHP, Vue und React sind drei repräsentative Frontend-Frameworks, jedes mit seinen eigenen einzigartigen Eigenschaften und Vorteilen. Bei der Auswahl des zu verwendenden Frontend-Frameworks müssen Entwickler eine fundierte Entscheidung treffen, die auf den Projektanforderungen, Teamfähigkeiten und persönlichen Vorlieben basiert. In diesem Artikel werden die Eigenschaften und Verwendungsmöglichkeiten der drei Front-End-Frameworks PHP, Vue und React verglichen.

Integration von Java-Framework und Front-End-React-Framework Integration von Java-Framework und Front-End-React-Framework Jun 01, 2024 pm 03:16 PM

Integration von Java-Framework und React-Framework: Schritte: Richten Sie das Back-End-Java-Framework ein. Projektstruktur erstellen. Konfigurieren Sie Build-Tools. Erstellen Sie React-Anwendungen. Schreiben Sie REST-API-Endpunkte. Konfigurieren Sie den Kommunikationsmechanismus. Praxisfall (SpringBoot+React): Java-Code: RESTfulAPI-Controller definieren. Reaktionscode: Rufen Sie die von der API zurückgegebenen Daten ab und zeigen Sie sie an.

So lösen Sie die Lebenszyklus-Hook-Funktion der Komponente in Uniapp manuell aus So lösen Sie die Lebenszyklus-Hook-Funktion der Komponente in Uniapp manuell aus Oct 21, 2023 am 11:04 AM

Uniapp ist ein plattformübergreifendes Anwendungsentwicklungs-Framework, das gleichzeitig iOS-, Android- und Webanwendungen erstellen kann. Im Anwendungsentwicklungsprozess sind Hook-Funktionen für den Komponentenlebenszyklus ein sehr wichtiger Teil. Sie werden verwendet, um entsprechende Vorgänge an bestimmten Zeitknoten auszuführen. Normalerweise wird die Lebenszyklusfunktion einer Komponente automatisch ausgeführt, wenn ein bestimmtes Ereignis ausgelöst wird, z. B. wenn das Laden der Seite abgeschlossen ist, die Komponente in die Ansicht eintritt, die Komponente aus der Ansicht entfernt wird usw. Manchmal müssen wir jedoch die Lebenszyklus-Hook-Funktion der Komponente manuell auslösen, um ein bestimmtes Ziel zu erreichen

Wie kann der Lebenszyklus von Golang-Coroutinen gesteuert werden? Wie kann der Lebenszyklus von Golang-Coroutinen gesteuert werden? May 31, 2024 pm 06:05 PM

Der Lebenszyklus der Go-Coroutine kann auf folgende Weise gesteuert werden: Erstellen Sie eine Coroutine: Verwenden Sie das Schlüsselwort go, um eine neue Aufgabe zu starten. Coroutinen beenden: Warten Sie, bis alle Coroutinen abgeschlossen sind, und verwenden Sie sync.WaitGroup. Verwenden Sie Kanalschließsignale. Verwenden Sie context context.Context.

See all articles