今天在寫React時,遇到的一個問題:
我在父組件里引用了子組件,在 componentWillMount() 中調用了一個異步函數,在返回結果中調用 this.setState() 來保存數據,在子組件的select下拉框里,使用state來渲染,結果子組件一直沒值。
仔細檢查后,查尋API:
omponentWillMount 在渲染前調用,在客戶端也在服務端。
componentDidMount : 在第一次渲染后調用,只在客戶端。之后組件已經生成了對應的DOM結構,可以通過this.getDOMNode()來進行訪問,在這方法中調用setState方法,會觸發重渲染。
componentWillReceiveProps 在組件接收到一個新的 prop (更新后)時被調用。這個方法在初始化render時不會被調用。
shouldComponentUpdate 返回一個布爾值。在組件接收到新的props或者state時被調用。在初始化時或者使用forceUpdate時不被調用。 可以在你確認不需要更新組件時使用。
componentWillUpdate在組件接收到新的props或者state但還沒有render時被調用。在初始化時不會被調用。
componentDidUpdate 在組件完成更新后立即調用。在初始化時不會被調用。 componentWillUnmount在組件從 DOM 中移除的時候立刻被調用。
解決辦法:
將異步方法這些放在componentDidMount中,就不會出現這個問題