react native使用過程問題總結

argd6535 8年前發布 | 29K 次閱讀 ReactNative 移動開發 React Native

本文react native問題根據個人經驗總結,可能有不準確的地方

1.版本支持度

問題:android端支持到android4.1, ios支持到ios7.0

解決:如需支持更低版本,可修改源碼,資料較少,困難度較大,不推薦。或者采用降級處理,對于低版本采用H5頁面來支持,這一方案被采用更多

2.listview內存占用

問題:react native 內存占用較高,對內存的回收不如原生好

解決:有幾個解決思路

  • 使用官方recycleview,一定程度降低內存占用

  • 避免無限長列表的使用場景

  • 使用社區方案,手動控制內存釋放,這樣可以控制住內存的增量。社區方案推薦sglistview

3.react native webview js bridge

問題:react native 官方的webview支持注入js,但是不支持weview調用react native中的方法,沒法做到雙向通信

解決:社區提供了react-native-js-bridge

4.react naitive background timer

問題:react native官方沒提供app在后臺時,持續運行的機制

解決:社區提供了react-native-background-timer

5.react native 分辨率適配

問題:在布局中寫的尺寸,react native不會自動根據設備調整

解決:布局時,涉及尺寸的地方,使用工具方法轉換

6.react native cookie使用

問題:react native官方缺少對cookie的使用的介紹

解決:社區提供了react-native-cookies組件,使用時,需要注意ios和android端差異。或者盡量避免直接使用cookie,可以通過自定義header解決

7.react native fetch blob

問題:使用fetch api獲取blob對象,js端獲取到的filesize為0

解決:社區提供了rnfetchblob組件

8.react native fetch upload file

問題:使用formdata上傳文件時,ios,android有差異

解決:ios端,formdata中使用base64,android使用filepath

9.react native webview css支持度

問題:react native android weview不支持css height 100%

解決:避免在網頁中使用這樣樣式,不能避免的,通過往webview注入js,改變目標元素的樣式值

10:react native webview 單頁應用

問題:單頁應用內,場景跳轉時,hashchange沒計入history,回退時不能依次回退

解決:手動記錄訪問歷史,控制回退

11:react native webview 錯誤處理機制

問題:react native webview在頁面渲染出錯時,未提供自定義錯誤渲染邏輯,并終止事件傳播的邏輯

解決:需修改官方webview源碼

12:react native webview私有協議支持不完善

問題:到0.35版本,react native ios webview 加載有私有協議喚起其他app的頁面時候,先渲染出來原頁面,后跳轉到默認失敗界面,原因是無法解析私有協議地址;

安卓端自0.31版本重寫了shouldOverrideUrlLoading方法,私有協議調起外部app時,如果用戶沒有安裝該app,代碼中沒有捕獲異常,導致crash

解決:對iOS端,在js中實現onShouldStartLoadWithRequest方法處理私有協議;對Android端,可以修改官方的ReactWebViewManager,使用try/catch包裹問題代碼。

 

 

來自:http://www.jianshu.com/p/de78ab59b5e8

 

 本文由用戶 argd6535 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!