React-Native性能優化點

shouldComponentUpdate

確保組件在渲染以後不須要再更新的,即靜態組件,儘可能在其中增長shouldComponentUpdate方法,防止二次消耗所產生的性能消耗css

shouldComponentUpdate() {
    //徹底靜態的組件,無需更新 
    return false;
}

key

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容器。性能優化

setNativeProps

使用該方法修改 View 、 Text 等 RN自帶的組件 ,則不會觸發組件的componentWillReceiveProps 、 shouldComponentUpdate 、 componentWillUpdate 等組件生命週期中的方法。dom

建議頻繁更新的操做,如tabs切換操做時,須要更新改tab的style,則可使用該屬性。異步

代碼片斷:佈局

me.refs.tabView.setNativeProps({
    style : {
        height : 0,
        opacity : 0
    }
});

最小化DOM

相似於html,React Native裏虛擬dom結構越複雜,則越低效。性能

不要使用陰影效果

React Native 裏面的 shadow 相關的樣式,是很是耗性能的css屬性優化

參考文章:
React Native 性能優化建議

相關文章
相關標籤/搜索