English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste capítulo, discutiremos os métodos de ciclo de vida dos componentes.
componentWillMount
já foi executado no servidor e no cliente antes da renderização.
componentDidMount
Somente após a primeira renderização no cliente ser executada. Este é o local onde deve ser feita a solicitação AJAX e a atualização do DOM ou do estado. Este método também é usado para outros frameworks JavaScript e para qualquer função de execução atrasada (por exemplosetTimeout
ou) integraçãosetInterval
para atualizar o estado, para que possamos acionar outros métodos de ciclo de vida.
componentWillReceiveProps
é chamado imediatamente após a atualização de props, então chama outro renderer. Estamos usandosetNewNumber
ao atualizar o estado.
shouldComponentUpdate
deve retornartrue
oufalse
valor. Isso determina se o componente será atualizado.true
padrão é definido como. Se você estiver certo de que o componente não precisa ser atualizado após a atualizaçãostate
ouprops
apresentado após a atualização, você pode retornarfalse
valor.
componentWillUpdate
Chamado antes da renderização.
componentDidUpdate
Chamado imediatamente após a renderização.
componentWillUnmount
Chamado após o componente ser removido do DOM. Estamos removendo o componentemain.js
.
Neste exemplo, vamosstate
definido no construtor. Vamos definirsetNewnumber
usado para atualizaçõesstate
Todas as métodos de ciclo de vida estão dentro do componente Content.
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 RECEIVE 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;
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);
Após a renderização inicial, obteremos a seguinte tela.