確保組件在渲染以後不須要再更新的,即靜態組件,儘可能在其中增長shouldComponentUpdate方法,防止二次消耗所產生的性能消耗css
shouldComponentUpdate() { //徹底靜態的組件,無需更新 return false; }
key是react的一個特殊的屬性,它是給React本身用的。若是咱們動態地建立 React 元素,並且 React 元素內包含數量或順序不肯定的子元素時,咱們就須要提供 key 這個特殊的屬性。(包括ListView 和 ScrollView)。html
咱們知道,當組件的屬性發生了變化,其 render 方法會被從新調用,組件會被從新渲染。可是在渲染以前,react都會進行diff,確保高效率的渲染,而這個惟一的key就很好的爲每個react組件肯定了id。React會比較更新先後的元素 key 值,若是相同則更新,若是不一樣則銷燬以前的,從新建立一個元素。react
基於ScrollView和ListView兩大容器,在渲染上,至關於web端的table佈局,須要等整個大table渲染完成才顯示頁面,也就是說,當容器內有大量的子元素,其白屏時間會很是長。web
採用異步渲染的方式,減小首屏加載的數據,實現數據懶加載,使用requestAnimationFrame 或 setTimeout 定時將單個組件push進ScrollView容器。性能優化
使用該方法修改 View 、 Text 等 RN自帶的組件 ,則不會觸發組件的componentWillReceiveProps 、 shouldComponentUpdate 、 componentWillUpdate 等組件生命週期中的方法。dom
建議頻繁更新的操做,如tabs切換操做時,須要更新改tab的style,則可使用該屬性。異步
代碼片斷:佈局
me.refs.tabView.setNativeProps({ style : { height : 0, opacity : 0 } });
相似於html,React Native裏虛擬dom結構越複雜,則越低效。性能
React Native 裏面的 shadow 相關的樣式,是很是耗性能的css屬性優化
參考文章:
React Native 性能優化建議