1、子組件接收父組件的參數,要在子組件的componentDidMount函數中更改當前組件的state,若寫在componentWillMount函數中,則會導致初始化界面UI的時候不能得到預期的效果。這是因為willMount方法會在dom還沒有渲染完成的時候就會觸發,而這時父組件傳給子組件的界面初始狀態state還未到達,而didMount方法是組件在完全掛載到網頁上才會被調用執行,保證數據的加載。在這方法中調用setState方法會觸發重渲染,從而能達到預期效果。
2、與組件界面UI無關的變量,不要都放在state中。這是因為setState方法更改state的過程是異步的。舉個栗子:更改state中A屬性的狀態后,立即調用另一個方法,而另一個方法是需要用到屬性A的,經調試發現馬上更改后立即獲取,是獲取不到最新的state中的變量值的。通常如果一個屬性值並不控制整體界面的UI,可以將其直接掛在this對象上,而不需要放進state中。這樣就能實時獲取到屬性的最新值了。即使這個屬性控制着子組件的UI,也是可以這么做的。
3、設置同樣字體大小,chromel瀏覽器上有時會顯示偏大的解決方案:給指定元素設置max-height的值即可。
4、封裝好的組件A,在渲染的時候為列表接收來自父組件的參數。渲染這樣一個組件A列表,有可能只有第一個組件的狀態能正確的跟數據狀態匹配上,而其他組件不能,這個時候需要用componentDidMount方法與componentWillReceiveProps搭配使用,前者用於組件第一次接收父組件傳來的contentInformation redux,而非首次接收參數則需要使用componentWillReceiveProps(nextProps)接收。
5、組件中設置定時器時需要注意銷毀,否則會出現bug。比如在重復獲取驗證碼這種操作的時候,會重復定時,從而出現倒計時非常快的現象。
