React-Native性能優化點


shouldComponentUpdate

確保組件在渲染之后不需要再更新的,即靜態組件,盡量在其中增加shouldComponentUpdate方法,防止二次消耗所產生的性能消耗

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

key

key是react的一個特殊的屬性,它是給React自己用的。如果我們動態地創建 React 元素,而且 React 元素內包含數量或順序不確定的子元素時,我們就需要提供 key 這個特殊的屬性。(包括ListView 和 ScrollView)。

我們知道,當組件的屬性發生了變化,其 render 方法會被重新調用,組件會被重新渲染。但是在渲染之前,react都會進行diff,確保高效率的渲染,而這個唯一的key就很好的為每一個react組件確定了id。React會比較更新前后的元素 key 值,如果相同則更新,如果不同則銷毀之前的,重新創建一個元素。

渲染性能低效

基於ScrollView和ListView兩大容器,在渲染上,相當於web端的table布局,需要等整個大table渲染完成才顯示頁面,也就是說,當容器內有大量的子元素,其白屏時間會非常長。

采用異步渲染的方式,減少首屏加載的數據,實現數據懶加載,使用requestAnimationFrame 或 setTimeout 定時將單個組件push進ScrollView容器。

setNativeProps

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

建議頻繁更新的操作,如tabs切換操作時,需要更新改tab的style,則可以使用該屬性。

代碼片段:

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

最小化DOM

類似於html,React Native里虛擬dom結構越復雜,則越低效。

不要使用陰影效果

React Native 里面的 shadow 相關的樣式,是非常耗性能的css屬性

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM