ReactJS - Ciclo di vita dei componenti
In questo capitolo discuteremo i metodi del ciclo di vita dei componenti.
Metodi del ciclo di vita
componentWillMount viene eseguito prima del rendering, sia sul lato server che su quello client.
componentDidMountviene eseguito dopo il primo rendering solo sul lato client. È qui che dovrebbero verificarsi le richieste AJAX e gli aggiornamenti DOM o di stato. Questo metodo viene utilizzato anche per l'integrazione con altri framework JavaScript e qualsiasi funzione con esecuzione ritardata comesetTimeout o setInterval. Lo stiamo usando per aggiornare lo stato in modo da poter attivare gli altri metodi del ciclo di vita.
componentWillReceivePropsviene invocato non appena gli oggetti di scena vengono aggiornati prima che venga chiamato un altro rendering. L'abbiamo attivato dasetNewNumber quando abbiamo aggiornato lo stato.
shouldComponentUpdate dovrebbe tornare true o falsevalore. Questo determinerà se il componente verrà aggiornato o meno. Questo è impostato sutrueper impostazione predefinita. Se sei sicuro che il componente non debba essere renderizzato dopostate o props sono aggiornati, puoi tornare false valore.
componentWillUpdate viene chiamato appena prima del rendering.
componentDidUpdate viene chiamato subito dopo il rendering.
componentWillUnmountviene chiamato dopo che il componente è stato smontato dal dom. Stiamo smontando il nostro componente inmain.js.
Nell'esempio seguente, imposteremo l'iniziale statenella funzione costruttore. IlsetNewnumber viene utilizzato per aggiornare il file state. Tutti i metodi del ciclo di vita sono all'interno del componente Contenuto.
App.jsx
import React from 'react';
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
data: 0
}
this.setNewNumber = this.setNewNumber.bind(this)
};
setNewNumber() {
this.setState({data: this.state.data + 1})
}
render() {
return (
<div>
<button onClick = {this.setNewNumber}>INCREMENT</button>
<Content myNumber = {this.state.data}></Content>
</div>
);
}
}
class Content extends React.Component {
componentWillMount() {
console.log('Component WILL MOUNT!')
}
componentDidMount() {
console.log('Component DID MOUNT!')
}
componentWillReceiveProps(newProps) {
console.log('Component WILL RECIEVE PROPS!')
}
shouldComponentUpdate(newProps, newState) {
return true;
}
componentWillUpdate(nextProps, nextState) {
console.log('Component WILL UPDATE!');
}
componentDidUpdate(prevProps, prevState) {
console.log('Component DID UPDATE!')
}
componentWillUnmount() {
console.log('Component WILL UNMOUNT!')
}
render() {
return (
<div>
<h3>{this.props.myNumber}</h3>
</div>
);
}
}
export default App;
main.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.jsx';
ReactDOM.render(<App/>, document.getElementById('app'));
setTimeout(() => {
ReactDOM.unmountComponentAtNode(document.getElementById('app'));}, 10000);
Dopo il rendering iniziale, avremo la seguente schermata.