React componentwillmount和componentdidmount請求數據

1.清楚調用順序

圖片描述

2.componentWillMount的問題

在componentWillMount中執行this.setState是不會觸發二次渲染的。es6

它也只會在掛載過程當中被調用一次,它的做用和constructor沒有太大差別。有不少人在componentWillMount中請求後臺數據,認爲這樣能夠更早的獲得數據,componentWillMout是在render函數執行前執行的,雖然請求是在第一次render以前發送的,可是返回並不能保證在render以前完成。render不會等你慢慢請求.因此在渲染的時候沒有辦法等到數據到來再去setState觸發二次渲染.異步

仔細思考一下,componentWillMount好像沒啥卵用了。正所謂存在即合理,在服務端渲染的場景中componentDidMount是不會被執行的,所以能夠在componnetWillMount中發生AJAX請求。函數

順便說一句在es6中,使用extend component的方式裏的constructor函數和componentWillMount是通用的做用,因此你在構造函數裏初始化了組件的狀態就沒必要在WillMount作重複的事情了.this

React中不推薦在componentWillMount中發送異步請求。spa

3.componentdidmount的優勢

componentDidMount呢?這個生命週期函數在是在render以後調用一次,component已經初始化完成了.3d

在生產時,componentDidMount生命週期函數是最好的時間去請求數據,其中最重要緣由:使用componentDidMount第一個好處就是這個必定是在組件初始化完成以後,再會請求數據,所以不會報什麼警告或者錯誤,咱們正常請教數據完成以後通常都會setState.component

相關文章
相關標籤/搜索