web-dev-qa-db-de.com

componentWillMount ist veraltet und wird in der nächsten Hauptversion 0.54.0 in React Native entfernt

Ich verwende die native Version von 0.54.0 und immer, wenn die Apps unter iOS ausgeführt werden, wird eine Warnung angezeigt, dass die Lebenszyklusmethoden nicht mehr verwendet werden. und bitte auch die Komponenten aktualisieren.

Warnung :  

componentWillMount ist veraltet und wird in der nächsten Hauptversion entfernt. Verwenden Sie stattdessen componentDidMount. Als temporäre Problemumgehung können Sie den Namen in UNSAFE_componentWillMount .. umbenennen. Bitte aktualisieren Sie die folgenden Komponenten: Container, Text, TouchableOpacity, Transitioner, View

Ich habe auch je nach dem Waring-Add-Präfix UNSAFE_ die Methode geändert.

UNSAFE_componentDidMount() {
}
UNSAFE_componentWillMount() {
}
UNSAFE_componentWillUpdate(nextProps, nextState) {
}
UNSAFE_componentWillReceiveProps(nextProps) {
}

Obwohl die Warnung weitergeht. Bitte hilf mir.

Momentan habe ich die YellowBox in meinen Apps ausgeblendet.

import { YellowBox } from 'react-native';

render() {

  YellowBox.ignoreWarnings([
    'Warning: componentWillMount is deprecated',
    'Warning: componentWillReceiveProps is deprecated',
  ]);
}
12
Kirit Modi

Sie sollten den gesamten Code von ComponentWillMount in den Konstruktor oder ComponentDidMount verschieben.

componentWillMount () wird unmittelbar vor dem Mounten aufgerufen. Es wird vor render () aufgerufen, daher führt das synchrone Aufrufen von setState () in dieser Methode nicht zu einem zusätzlichen Rendering. Im Allgemeinen empfehlen wir die Verwendung von constructor () statt . Vermeiden Sie die Einführung von Nebenwirkungen oder Abonnements in diese Methode. Verwenden Sie in diesen Anwendungsfällen komponenteDidMount () statt . Dies ist der einzige Lebenszyklus-Hook, der beim Server-Rendering aufgerufen wird.

componentDidMount () wird unmittelbar nach dem Mounten einer Komponente aufgerufen. Die Initialisierung, die DOM-Knoten erfordert, sollte hier ausgeführt werden. Wenn Sie Daten von einem Remote-Endpunkt laden müssen, ist dies ein guter Ort, um die Netzwerkanforderung zu instantiieren. Diese Methode ist ein guter Ort, um Abonnements einzurichten. Wenn Sie dies tun, vergessen Sie nicht, die Komponente in KomponenteWillUnmount () ..__ abzubestellen. Der Aufruf von setState () in dieser Methode löst ein zusätzliches Rendering aus. Dies geschieht jedoch, bevor der Browser den Bildschirm aktualisiert. Dies garantiert, dass, obwohl das render () in diesem Fall zweimal aufgerufen wird, der Benutzer den Zwischenstatus nicht sehen kann. Verwenden Sie dieses Muster mit Vorsicht, da dies häufig zu Leistungsproblemen führt. Es kann jedoch in Fällen wie Modalen und Tooltips erforderlich sein, wenn Sie einen DOM-Knoten messen müssen, bevor Sie etwas rendern, das von seiner Größe oder Position abhängig ist.

Aus den offiziellen Dokumenten

13
Vladimir K.

Da componentDidMount nicht veraltet ist und definitiv immer noch sicher verwendet werden kann, muss dieser Methode kein UNSAFE_ hinzugefügt werden. Die ComponentWill Something -Methoden sind diejenigen, die auf dem Weg zu sein scheinen. Verwenden Sie anstelle von componentWillMount einen Konstruktor für das Zeug, das keine Nebeneffekte erzeugt, und verwenden Sie componentDidMount für das Zeug, das dies tut.

0
Elliott Jones