React請求數據為什么要在componentDidMount方法里面做?


轉載自:https://segmentfault.com/q/1010000008133309/a-1020000008135702

這與React組件的生命周期有關,組件掛載時有關的生命周期有以下幾個:

  • constructor()

  • componentWillMount()

  • render()

  • componentDidMount()

上面這些方法的調用是有次序的,由上而下,也就是當說如果你要獲取外部數據並加載到組件上,只能在組件"已經"掛載到真實的網頁上才能作這事情,其它情況你是加載不到組件的。

componentDidMount方法中的代碼,是在組件已經完全掛載到網頁上才會調用被執行,所以可以保證數據的加載。此外,在這方法中調用setState方法,會觸發重渲染。所以,官方設計這個方法就是用來加載外部數據用的,或處理其他的副作用代碼。

constructor被調用是在組件准備要掛載的最一開始,所以此時組件尚未掛載到網頁上。

componentWillMount方法的調用在constructor之后,在render之前,在這方法里的代碼調用setState方法不會觸發重渲染,所以它一般不會用來作加載數據之用,它也很少被使用到。

一般的從后台(服務器)獲取的數據,都會與組件上要用的數據加載有關,所以都在componentDidMount方法里面作。雖然與組件上的數據無關的加載,也可以在constructor里作,但constructor是作組件state初紿化工作,並不是設計來作加載數據這工作的,所以所有有副作用的代碼都會集中在componentDidMount方法里。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM