React Native 首次加載白屏優化


  RN首次加載都會有個白屏過程,一般都會有500ms+的白屏時間,原生頁面開發同樣的頁面會能夠快速顯示而在RN頁面中有個明顯的等待過程,這個會影響用戶體驗。

 1.使用過渡頁面

簡單處理可以在白屏過程中加個過度頁面,通過設置RCTRootView的loadingView添加默認的加載過程

/**
 * A view to display while the JavaScript is loading, so users aren't presented
 * with a blank screen. By default this is nil, but you can override it with
 * (for example) a UIActivityIndicatorView or a placeholder image.
 */
@property (nonatomic, strong) UIView *loadingView;

    2.統一加載效果

一般頁面數據從服務器獲取,會有網絡請求,可以將上面的loadingView和網絡請求的loading效果統一。雖然並沒有減少加載時間,但是可以給用戶一直在請求數據的錯覺,類似原生的交互效果。

    3.並發操作

由於RN頁面網絡請求從request到response也會有個時間段,考慮將原生模塊發送網絡請求和RN加載並發操作,等待網絡數據獲取成功后重新渲染頁面。

 

注:1.需要rootview初始化的同時發起網絡請求,需要提前預置網絡請求的接口和參數,建議將RN的業務進行統一入口處理,通過設置config數據或者前置傳入。

  2.由於並發操作,可能會出現兩種情況,一種render臨時界面結束網絡請求數據還沒有,需要等待數據返回再re-render,第二種網絡請求數據已經返回RN初始化加載還沒有完成,需要主動去原生模塊去獲取數據。

 

4. 頁面數據緩存

如果頁面實時性要求不高,可以用緩存數據來render臨時頁面。

 

5.共享RCTBridge

可以通過共享RCTBridge來初始化rootview,提前初始化RCTBridge,在iOS可以避免多次初始化JSCORE,不過這樣會出現一些其他問題,后續再分析。。。

 

  

 


免責聲明!

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



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