RN 性能優化


按需加載: 導出模塊使用屬性getter動態require

使用Import語句導入模塊,會自動執行所加載的模塊。如果你有一個公共組件供業務方使用,例如:common.js

import A from './A';
import B from './B';
import C from './C';
export {
  A,
  B,
  C
}

業務方想使用common.js中A模塊,

import {A} from './common.js';

此時,雖然只想引用A模塊,但實際B,C模塊代碼也被執行了。

注意:

如果模塊本身使用ES5導出方式,例如module.exports = A,導出方式采用require('./A')引用。模塊采用ES6導出方式,例如export default class B {} ,導出方式采用require('./B').default引用

假如A, B, C 都是es6 寫法,上面可以優化為

module.exports = {
    get A() {return(require('./A').default);},
    get B() {return(require('./B').default);},
    get C() {return(require('./C').default);},
};

業務方使用不變

懶加載

一般入口文件,會引入所有頁面文件,但是我們首次打開APP的時候,只是需要其中一個即可,這樣就會造成首頁打開速度會受到影響
這樣我們就需要使用懶加載,使得真正使用的時候,才被引入

使用ListView/FlatList 代替 ScrollView

這個是老生常談的,長列表要使用List, 不能直接map

使用PureComponent代替 Component

PureComponent 組件會自己判斷舊的props 、 state 和新的是否相同,相同的話,就不會再重新渲染(注意:這里是的比較是淺比較), 相當於實現了 shouldUpdateComponent;
有時候需要自己實現 shouldUpdateComponent,進行深比較props 、 state, 減少渲染次數,也要考慮業務以免更新不了。

ScrollView中內容過多, 根據偏移量設置渲染內容;

頁面要渲染A,B,C,D,E 其中 D, E都在首屏外,可以假如滾動 100偏移,再開始渲染D, E, 這樣做的好處就是減少剛進來時渲染的內存消耗,提升渲染速度;


免責聲明!

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



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