註:getDefaultProps這種定義方式是用在你定義元件用的是React.createClass方式的
如果使用的是es6的語法,例如用的是class 元件名extends React.Component的話,就不要用
getDefaultProps這種方式去定義props了,而是應該用static propTypes ={}來定義,這樣就不會有警了
设置默认的props,也可以用dufaultProps设置组件的默认属性. ---》设置
#註:與getDefaultProps的差別在於前者設定預設的props,後者設定初始的state在使用es6的class語法時是沒有這個鉤子函數的,可以直接在constructor中定義this.state。此時可以存取this.props
註:元件初始化時只調用,以後元件更新不調用,整個生命週期只調用一次,此時可以修改state。
附註:react最重要的步驟,建立虛擬dom,進行diff演算法,更新dom樹都在此進行。此時就不能更改state了。
註:元件渲染之後調用,只調用一次。可以在此請求資料
註:元件初始化時不調用,元件接受新的props時調用。
#附註:react效能最佳化非常重要的一環。元件接受新的state或props時調用,我們可以設定在此對比前後兩個props和state是否相同,如果相同則返回false阻止更新,因為相同的屬性狀態一定會產生相同的dom樹,這樣就不需要創造新的dom樹和舊的dom樹進行diff演算法對比,節省大量效能,尤其是在dom結構複雜的時候
#註:元件初始化時不調用,只有在元件會更新時才調用,此時可以修改state
註:元件渲染
註:元件初始化時不調用,元件更新完成後調用,此時可以取得dom節點。
componentWillUnmount()
註:元件將要卸載時調用,一些事件監聽和定時器需要在此時清除。
推薦教學:《react教學》
以上是react 生命週期函數有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!