
React生命周期分为三种状态,分别是mounting,updating,unmounting;意味着已插入真实的DOM,正在被重新渲染,已从真实的DOM移除。
因此,对应的生命周期方法有:
componentWillMount ,componentDidMount ,
componentWillReceiveProps ,shouldComponentUpdate ,
componentWillUpdate,componentDidUpdate ,
componentWillUnmount。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
class TestComp extends React.Component { () { console.log("componentWillMount"); } componentDidMount() { //可以在该方法中调用setTimeout,setInterval等操作。 console.log("componentDidMount"); } componentWillReceiveProps(newProps) { console.log("componentWillReceiveProps"); } shouldComponentUpdate(newProps, newState) { console.log("shouldComponentUpdate"); //如果为false,不会执行后面的生命周期方法 return true; } componentWillUpdate(newProps, newState) { console.log("componentWillUpdate"); } componentDidUpdate(newProps, newState) { console.log("componentDidUpdate"); } componentWillUnmount() { console.log("componentWillUnmount"); }
render() { return ( <div> <h3>{this.props.number}</h3> </div> ); } }
class IncreButton extends React.Component { constructor(props) { super(props); this.state = {number: 0}; }
setNewNumber = () => { this.setState({number: this.state.number +1}); } render() { return ( <div> <button onClick = {this.setNewNumber}>加1</button> <TestComp number = {this.state.number}></TestComp> </div> ); } }
ReactDOM.render( <div> <IncreButton /> </div>, document.getElementById("example") );
|
注:
1.页面一加载,componentWillMount,componentDidMount
2.每次点击加1按钮后,componentWillReceiveProps,shouldComponentUpdate,componentWillUpdate,componentDidUpdate
近期评论