亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

React數據獲取為什么一定要在componentDidMount里面調用?

React數據獲取為什么一定要在componentDidMount里面調用?

婷婷同學_ 2018-10-10 18:13:14
根據文檔說法,從后臺獲取數據一定要放在componentDidMount里面調用,為什么不能在constructor或者componentWillMount里面調用?有什么不同?
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

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

  • constructor()

  • componentWillMount()

  • render()

  • componentDidMount()

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

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

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

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

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


查看完整回答
反對 回復 2018-11-11
  • 1 回答
  • 0 關注
  • 539 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號