掛載階段的組件生命周期
我們將reactjs組件渲染并構(gòu)造DOM元素然后塞入頁面的過程稱為組件的掛載, 我們知道在reactjs內(nèi)部對于每個組件都有一個初始化組件---->掛載到界面的過程,所以一個組件的調(diào)用可以像這樣理接
constructor()
render()
//構(gòu)造DOM節(jié)點并插入頁面
但是為了更好的掌控組件的掛載,reactjs又新增了兩個方法
constructor()
componentWillMount()
render()
//構(gòu)造DOM節(jié)點并插入頁面
componentDidMount()
componentWillMount()這個方法實在組件掛載之前調(diào)用,而componentDidMount是在組件掛在完成之后調(diào)用。
當然組價既然可以掛載,那就可以刪除,而方法componentUnMount就是在組件刪除之前調(diào)用的
constructor()
componentWillMount()
render()
//構(gòu)造DOM節(jié)點并插入頁面
componentDidMount()
componentUnMount()
那么這些生命周期函數(shù)都有什么用呢
- constructor,這個函數(shù)可以用于對一些變量的初始化,及一些方法的綁定
- componentWillMount,這個函數(shù)用于頁面渲染之前,因此我們可以在其中進行一些諸如ajax請求的發(fā)送,定時器的開啟等操作
- componentdDidMount,因為這個函數(shù)執(zhí)行的時候組價已經(jīng)掛載完畢,因此可以再其中進行動畫操作等
- componentUnMount這個函數(shù)運行與組件被刪除時,我們可以在其中進行一些數(shù)據(jù)的刪除,如定時器
更新階段的組件生命周期
- 我們知道的是在State發(fā)送改變的時候組件也會重新渲染,此時又會產(chǎn)生新的生命周期
shouldComponentUpdate(nextProps, nextState):你可以通過這個方法控制組件是否重新渲染。如果返回 false 組件就不會重新渲染。這個生命周期在 React.js 性能優(yōu)化上非常有用。
componentWillReceiveProps(nextProps):組件從父組件接收到新的 props 之前調(diào)用。
componentWillUpdate():組件開始重新渲染之前調(diào)用。
componentDidUpdate():組件重新渲染并且把更改變更到真實的 DOM 以后調(diào)用。
- 需要注意的是這些函數(shù)在第一次渲染時不會調(diào)用
- 還需注意的是不要在componentWillUpdate里面改變state,否則會陷入死循環(huán)
- 至于具體使用環(huán)境請在實際開發(fā)中探索