【技術(shù)】ReactNative問(wèn)題整理

1.前言

現(xiàn)在前端跨平臺(tái)技術(shù)越來(lái)越流行了,跨平臺(tái)框架也是層出不窮,其中ReactNative (FaceBook出品)、Weex (阿里出品)、Flutter (谷歌出品) 作為大廠出品是目前最受歡迎的幾大跨平臺(tái)框架。

最近自己也在研究學(xué)習(xí)ReactNative,作為一個(gè)跨平臺(tái)框架的新手難免會(huì)遇到各種問(wèn)題,現(xiàn)將遇到的這些問(wèn)題以及解決方案整理記錄一下,方便以后自己以及他人研究參考。

2.常見(jiàn)問(wèn)題

1、React-Native: Could Not find iPhone 6 Simulator

解決方案:
在執(zhí)行npm install之后,打開(kāi)node_modules/react-native/local-cli/runiOS/findMatchingSimulator.js 文件,分別定位到第30、36行,將這兩行的代碼替換為如下代碼:

 //第30行代碼替換
 if (!version.includes('iOS')) {
       continue;
   }

 //第36行代碼替換
 if (simulator.isAvailable !== true) {
     continue;
  }

2、SectionList "TypeError: Cannot read property 'length' of undefined"

解決方案:
此報(bào)錯(cuò)為數(shù)據(jù)構(gòu)造的問(wèn)題,dataSource 數(shù)據(jù)結(jié)構(gòu)必須如下所示:

 var sections = [
      { key: "分類1", data: [{ title: "數(shù)據(jù)1" }, { title: "數(shù)據(jù)1" }, { title: "數(shù)據(jù)1" }] },
      { key: "分類2", data: [{ title: "數(shù)據(jù)2" }, { title: "數(shù)據(jù)2" }, { title: "數(shù)據(jù)2" }] }, 
    ];

必須以 key ~ data 的鍵值形式構(gòu)造數(shù)據(jù)源。

3、Unrecognized font family 'Material Icons'

解決方案:

npm install react-native-vector-icons --save
react-native link react-native-vector-icons 

4、ReactNative 在 iOS 模擬器上運(yùn)行很慢

解決方案:

在命令行執(zhí)行如下命令:
react-native link

會(huì)出現(xiàn)如下提示:
rnpm-install info Linking react-native-video ios dependency
rnpm-install info iOS module react-native-video has been successfully linked

表示已經(jīng)連接成功,下次運(yùn)行速度會(huì)明顯提升,但是如果報(bào)錯(cuò)的話,將報(bào)錯(cuò)的模塊link一下就可以,執(zhí)行的命令如下:react-native link (模塊名)

例如 react-native link react-native-video

5、Print: Entry, ":CFBundleIdentifier", Does Not Exist

解決方案:
找到ios目錄下的.xcodeproj 工程文件打開(kāi),手動(dòng)修改BundleIdentifier 配置為可用的BundleID且把工程下含Test的目錄都刪除。

6、'config.h' file not found
解決方案:
在工程目錄下找到如下路徑并執(zhí)行指令:

cd node_modules/react-native/third-party/glog-0.3.4
//  第一步。找到路徑,進(jìn)入glog-0.3.4文件里

../../scripts/ios-configure-glog.sh
//  第2步,執(zhí)行配置腳本。

7、obtain an updated library from the vendor, or disable bitcode for this target

解決方案:
打開(kāi).xcodeproj 工程找到Build Settings配置下的Enable Bitcode 設(shè)置為NO

3.RN框架以及項(xiàng)目實(shí)例

1、CRN
CRN是Ctrip React Native簡(jiǎn)稱,由攜程無(wú)線平臺(tái)研發(fā)團(tuán)隊(duì)基于React Native框架優(yōu)化,定制成穩(wěn)定性和性能更佳、也更適合業(yè)務(wù)場(chǎng)景的的跨平臺(tái)開(kāi)發(fā)框架。

開(kāi)源地址:
https://github.com/ctripcorp/crn

2、beeshell
美團(tuán)開(kāi)源的一個(gè) React Native 應(yīng)用的基礎(chǔ)組件庫(kù),基于 0.53.3 版本,提供一整套開(kāi)箱即用的高質(zhì)量組件,包含 JS 組件和復(fù)合組件(包含 Native 代碼),涉及 FE、iOS、Android 三端技術(shù),兼顧通用性和定制化,支持自定義主題,用于開(kāi)發(fā)和服務(wù)企業(yè)級(jí)移動(dòng)應(yīng)用。

開(kāi)源地址:
https://github.com/Meituan-Dianping/beeshell

3、ReactNativeOne
基于React-Native的高仿「ONE·一個(gè)」,兼容Android、iOS雙平臺(tái)(由于接口原因,該代碼庫(kù)不再更新)

開(kāi)源地址:
https://github.com/lipeiwei-szu/ReactNativeOne

4、OneM
OneM是一款純ReactNative打造的集雜志瀏覽、音樂(lè)播放、視頻播放于一體的綜合性App(時(shí)光網(wǎng)+ONE),并且支持iOS和Android雙平臺(tái),并且完美適配iPhoneX與Android機(jī)型。

開(kāi)源地址:
https://github.com/guangqiang-liu/OneM

4.教程資料

React Native視頻教程-項(xiàng)目實(shí)戰(zhàn)》該套視頻由全棧特級(jí)講師旋之華錄制。

鏈接:
https://pan.baidu.com/s/1yEfCKjxJ4ObIiw9w-Q5uNQ 密碼:14dw

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容