English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In diesem Kapitel werden wir die Lebenszyklusmethoden der Komponenten besprechen.
componentWillMount
wurde sowohl auf dem Server als auch auf dem Client vor der Renderung ausgeführt.
componentDidMount
Wird nur nach der ersten Renderung auf dem Client ausgeführt. Dies ist der Ort, an dem AJAX-Anfragen und DOM- oder Zustandsaktualisierungen durchgeführt werden sollten. Dieses Verfahren wird auch verwendet, um mit anderen JavaScript-Frameworks sowie mit jeder verzögerten Funktion (z.B.setTimeout
oder integriertsetInterval
。我们正在使用它来更新状态,以便我们可以触发其他生命周期方法。
componentWillReceiveProps
道具更新后立即调用,然后调用另一个渲染器。我们是从setNewNumber
更新状态时触发的。
shouldComponentUpdate
应该返回true
或false
值。这将确定组件是否将被更新。true
默认情况下设置为。如果您确定组件不需要在更新后state
或props
更新后呈现,则可以返回false
值。
componentWillUpdate
在渲染之前被调用。
componentDidUpdate
在渲染后立即调用。
componentWillUnmount
从dom卸下组件后调用。我们正在中卸载组件main.js
。
在下面的示例中,我们将state
在构造函数中设置初始值。将setNewnumber
用于更新的state
。所有生命周期方法都在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}>ERHÖHEN</button> <Content myNumber={this.state.data}></Content> </div> ; } } class Content extends React.Component { componentWillMount() { console.log('Komponent WIRD ERHALTEN!') } componentDidMount() { console.log('Komponent WIRD MONTIERT!') } componentWillReceiveProps(newProps) { console.log('Komponent ERHALT EIGENSCHAFTEN!') } 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);
Nach der ersten Renderung erhalten wir den folgenden Bildschirm.