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?

青灯夜游
Freigeben: 2022-03-21 18:28:22
Original
3019 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage