Jeśli sieć poprosi bibliotekę obsługującą o przerwanie trwającego połączenia z siecią, możesz ją wywołać w metodzie componentWillUnmount
.
Ale jeśli chodzi o czyszczenie elementów DOM
, podam przykłady na podstawie mojego doświadczenia i zastosowania.
Pierwszy z nich to -
import React, { Component } from 'react';
export default class SideMenu extends Component {
constructor(props) {
super(props);
this.state = {
};
this.openMenu = this.openMenu.bind(this);
this.closeMenu = this.closeMenu.bind(this);
}
componentDidMount() {
document.addEventListener("click", this.closeMenu);
}
componentWillUnmount() {
document.removeEventListener("click", this.closeMenu);
}
openMenu() {
}
closeMenu() {
}
render() {
return (
<div>
<a
href = "javascript:void(0)"
className = "closebtn"
onClick = {this.closeMenu}
>
×
</a>
<div>
Some other structure
</div>
</div>
);
}
}
Oto jestem usuwania słuchacza zdarzenia kliknięcia które dodaną gdy komponent zamontowane.
drugi jest -
import React from 'react';
import { Component } from 'react';
import ReactDom from 'react-dom';
import d3Chart from './d3charts';
export default class Chart extends Component {
static propTypes = {
data: React.PropTypes.array,
domain: React.PropTypes.object
};
constructor(props){
super(props);
}
componentDidMount(){
let el = ReactDom.findDOMNode(this);
d3Chart.create(el, {
width: '100%',
height: '300px'
}, this.getChartState());
}
componentDidUpdate() {
let el = ReactDom.findDOMNode(this);
d3Chart.update(el, this.getChartState());
}
getChartState() {
return {
data: this.props.data,
domain: this.props.domain
}
}
componentWillUnmount() {
let el = ReactDom.findDOMNode(this);
d3Chart.destroy(el);
}
render() {
return (
<div className="Chart">
</div>
);
}
}
Tutaj staram się zintegrować d3.js
z zareagować. W componentWillUnmount
Usuwam element wykresu z domingu.
Poza tym użyłem componentWillUnmount
do czyszczenia modów bootstrap po otwarciu.
Jestem pewien, że istnieje mnóstwo innych przypadków użycia, ale są to przypadki, w których użyłem. Mam nadzieję, że Ci to pomoże.