ReactJs Wie verwende ich componentWillUnmount () richtig?

8

Aus dem offiziellen Lernprogramm: componentWillUnmount () wird unmittelbar vor dem Unmounten und dem Löschen einer Komponente aufgerufen. Führen Sie bei dieser Methode alle erforderlichen Bereinigungen durch, z. B. das Deaktivieren von Zeitgebern, das Abbrechen von Netzwerkanforderungen oder das Bereinigen von DOM-Elementen, die in componentDidMount

erstellt wurden

Aber ich habe kein richtiges Beispiel für die vollständige Umsetzung dieser Lebenszyklus-Methode gesehen.

Ich weiß, wie man Timer ungültig macht. Wie beim Abbrechen von Netzwerkanforderungen wird fetch meistens in reaktiven Projekten über jQuery's verwendet und hat die Funktionalität noch nicht abgebrochen.

Es ist also der letzte Teil, den ich mich frage: Aufräumen aller DOM-Elemente, die in componentDidMount

erstellt wurden

Was heißt das? Wie kann ich es implementieren?

    
Ali Ankarali 23.11.2016, 09:19
quelle

2 Antworten

7

Wenn die sendende Bibliothek für das Senden von Netzwerkaufträgen das Abbrechen des laufenden Netzwerkanforderungsaufrufs unterstützt, können Sie das definitiv in componentWillUnmount method aufrufen.

Aber wenn wir die DOM Elemente bereinigen, werde ich einige Beispiele nach meiner Erfahrung und Verwendung geben.

Der erste ist -

%Vor%

Hier entferne ich den Click-Ereignis-Listener, den ich hinzugefügt habe, als die Komponente geladen wurde.

Der zweite ist -

%Vor%

Hier versuche ich d3.js mit react zu integrieren. In componentWillUnmount Ich entferne das Diagrammelement aus dem Dom.

Abgesehen davon habe ich componentWillUnmount verwendet, um die Bootstrap Modals nach dem Öffnen zu bereinigen.

Ich bin mir sicher, dass es noch viele andere Anwendungsfälle gibt, aber das sind die Fälle, in denen ich sie verwendet habe. Ich hoffe es hilft dir.

    
WitVault 23.11.2016, 10:16
quelle
4

Beim Erstellen von Components mit React fügt sich nicht jede Bibliothek gut in die Philosophie ein, das DOM verwalten zu wollen.

Ein Beispiel hierfür wäre eine grafische Bibliothek wie c3 . c3 erwartet einen DOM-Knoten und erstellt / verwaltet sein eigenes Markup außerhalb von React. In diesem Fall sollten Sie alle von dieser Bibliothek erstellten Elemente bereinigen, wenn Ihre Komponente aus dem DOM entfernt wird.

%Vor%

Hier erstellt React ein einzelnes div als Platzhalter für c3 , um den Inhalt hinzuzufügen. Dieser Prozess wird im Hook componentDidMount lifecycle gestartet und in componentWillUnmount erneut bereinigt.

    
quelle

Tags und Links