當組件被實例化而且插入Dom
時所執行的方法,也會按照下的順序依次執行。git
constructor()github
構造方法。web
這個方法有兩個目的:websocket
初始化一個本地state
。dom
this.state = {color: 'red'};
要避免將props
參數直接賦值給state
,this.state = {color: props.color}
是不容許 的
綁定方法。socket
咱們知道React Class
中是不會繼承this
的,若是在class
的方法中使用this
,那麼咱們須要將this
綁定到方法中。函數
this.clickHandler = this.clickHandler.bind(this);
綁定this
,將須要super(props)
,不然會提示找不到this
.
示例:this
constructor(props) { super(props); this.state = {color: 'red'}; this.clickHandler = this.clickHandler.bind(this); }
static getDerivedStateFromProps()code
當本地state
須要根據props
來改變的時候可調用此方法。component
這個方法是在render()
前會被執行,只要執行render()
都會被在以前被觸發。
該方法有兩個參數props
和state
; 返回值爲state
對象, 不須要返回總體state
,把須要改變的state
返回便可。
示例:
static getDerivedStateFromProps(props, state) { if(props.color !== state.color) { return {color: props.color}; } }
render()
這個方法是React組件中必需要提供的方法。當state
或者props
任一數據有更新時都會執行。
須要注意當繼承PureComponent
時,不會對對象進行深度比較,也就是,不會根據對象內的對象變化時執行render()
.
render()
是一個純函數,也就是不能在這個方法中有相似setState()
這樣的行爲。
返回的數據類型能夠有:
null
、String
、Number
、Array
、Boolean
。
注意:不能返回
undefined
.
當shouldComponentUpdate()
返回false
時,不管state
和props
有沒有變化,這個方法都不執行。
示例:
render() { return ( <div>{this.state.color}</div> ); }
componentDidMount()
componentDidMount()
方法是在組件加載完後當即執行,也就是當該組件相關的dom
節點插入到dom
樹中時。該方法在組件生命中只執行一次。
通常狀況,咱們會在這裏setState()
根據props
的值,也能夠從這裏調用接口,獲取服務端的數據,也能夠在這裏監聽websocket、setInterval
等操做。
注意:一些監聽須要在組件卸載時清理掉,不然會引發異常。
示例:
componentDidMount() { this.setState({color: this.props.color}); }
推薦閱讀《React 手稿》