吐血推薦!React Native學(xué)習(xí)筆記(day03)

此篇干貨出沒绣张,請(qǐng)小心答渔!

現(xiàn)狀:

很多公司項(xiàng)目歷史都較為悠久,想要推翻用React-Native重寫還是會(huì)有很多問題涉及到很多架構(gòu)改動(dòng)侥涵,許多時(shí)候沼撕,我們只是一些界面需要采用RN方案來實(shí)現(xiàn),因此在這種情況下芜飘,我們要將React-Native集成到現(xiàn)有項(xiàng)目中务豺。網(wǎng)上有很多資料,但是一些資料大多都是15年16年的嗦明,很多版本已經(jīng)不適用笼沥,按其中方法接入會(huì)有各種坑。點(diǎn)擊官方接入集成地址如果英文較好的小伙伴還是看官方的文檔來操作比較權(quán)威娶牌。

調(diào)整一天我才順利接入奔浅,先列舉幾個(gè)坑點(diǎn),防止大家重復(fù)踩坑:
1.盡量用cocoapods集成诗良,集成分為兩種汹桦,一種使用cocoapods,另一種是不用cocoapods鉴裹。官方推薦也是使用cocoapods安裝营勤,否則很多地方需要配置灵嫌。
2.現(xiàn)在最新版本已經(jīng)0.46,這個(gè)地方我之前的文章也提到過葛作,國(guó)內(nèi)網(wǎng)絡(luò)環(huán)境下編譯0.46版本可能會(huì)失敗,推薦使用0.44.3版本來操作猖凛。
這邊坑點(diǎn)還有很多赂蠢,我先不在這邊列舉。跟著下面的文檔辨泳,我會(huì)在其中描述虱岂,如果遇到其他問題,也歡迎留言交流菠红。

下面開始動(dòng)手操作集成:

1.新建一個(gè)react native項(xiàng)目第岖,react-native init AwesomeProject這邊AwesomeProject盡量用自己的工程名,這樣后續(xù)操作會(huì)方便不少试溯,當(dāng)然不改名也無所謂蔑滓。
2.新建個(gè)rn項(xiàng)目,我們只是利用下這個(gè)新建后的遇绞,package.json和node_modules键袱。省去再npm install了。刪除不必要的文件摹闽,留下node_modules和package.json,然后新建一個(gè)ios文件夾蹄咖,將原來項(xiàng)目的根目錄層全拷貝至ios文件夾。不上圖付鹿,看文字操作可能還有誤解澜汤,之前看了幾篇博客都是這樣。

簡(jiǎn)書1.png

這邊還有個(gè)遺漏點(diǎn):
package.js里改下react-native版本號(hào)舵匾,然后npm install一下俊抵,

"dependencies": {
    "react": "16.0.0-alpha.6",
    "react-native": "0.44.3"
}

3.安裝cocoapods,這個(gè)步驟我就不贅述了纽匙。一般iOS開發(fā)我相信都用過务蝠。
4.在剛才的ios文件夾下,創(chuàng)建Podfile文件烛缔,可以touch Podfile馏段,也可以pod init。
5.創(chuàng)建完后践瓷,在里面引入React相關(guān)院喜,根據(jù)自己需要引入。直接上干貨晕翠,大家根據(jù)需要修改
platform :ios,’8.0’
# target的名字一般與你的項(xiàng)目名字相同
target ‘iportal’ do

  # 'node_modules'目錄一般位于根目錄中
  # 但是如果你的結(jié)構(gòu)不同喷舀,那你就要根據(jù)實(shí)際路徑修改下面的`:path`
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'DevSupport', # 如果RN版本 >= 0.43砍濒,則需要加入此行才能開啟開發(fā)者菜單
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # 這個(gè)模塊是用于調(diào)試功能的
    ‘RCTImage’,
    # 在這里繼續(xù)添加你所需要的模塊
  ]
  # 如果你的RN版本 >= 0.42.0,請(qǐng)加入下面這行
  pod "Yoga", :path => "../node_modules/react-native/ReactCommon/yoga"

end

這邊注意下硫麻,如果沒引用爸邢,卻在js代碼中使用了,比如Text,那么編譯不會(huì)報(bào)錯(cuò)拿愧,app會(huì)紅色警告杠河。

6.pod install,這步不多描述浇辜。
7.完成后券敌,通過.xcworkspace打開,別用.xcodeproj打開柳洋,用過cocoapods的都知道待诅。
8.打開后直接編譯,可能會(huì)報(bào)錯(cuò),那么別緊張熊镣。按照如下步驟排查卑雁。每個(gè)人出錯(cuò)原因都不一致,只能一步步排查轧钓。通常會(huì)有這個(gè)錯(cuò)序厉,can't find xxx in i386之類。遇到這個(gè)問題是架構(gòu)問題毕箍,將pod的build active Architecture Only與項(xiàng)目設(shè)置一致NO(如果有第三方要求yes弛房,根據(jù)你需求改)。
Base SDK按項(xiàng)目的屬性設(shè)置而柑,lastest ios文捶。這時(shí)候你會(huì)發(fā)現(xiàn)architecture已經(jīng)變成armv7 armv7s arm64和項(xiàng)目一致了。這樣再次cmd+b媒咳,神奇的發(fā)現(xiàn)success!如果還是fail粹排,那么可以嘗試重pod install,clean項(xiàng)目涩澡,再編譯顽耳。這邊還有其他辦法,可以在stackoverflow搜索妙同,我這只是一個(gè)解決辦法射富。

測(cè)試一下:

到這步,我們已經(jīng)完成了rn繼承到原生iOS現(xiàn)有項(xiàng)目粥帚。但是我們還沒寫代碼呢胰耗,怎么算完成。我們來測(cè)試一下芒涡。
我在根目錄柴灯,新建了一個(gè)index.ios.js卖漫,與cellNew.js。用來測(cè)試一下加載赠群。在xcode中羊始,rn組件作為RCTRootView加載進(jìn)來。在xcode中寫:

initialProperties :nil                                      launchOptions    : nil];   ```
注意一下這邊的moduleName與js端register的名字一樣乎串。`initialProperties`這邊可以傳遞字典參數(shù)給js端店枣。我就不展示用法了。后續(xù)文章會(huì)詳解叹誉。效果如下:


![簡(jiǎn)書2.png](http://upload-images.jianshu.io/upload_images/1375161-db2f98b1b1b3dfe1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

好了,大功告成闷旧。結(jié)合前幾篇文章长豁,我們已經(jīng)能夠集成react native,并且完成簡(jiǎn)單的頁面集成制作交互忙灼。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匠襟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子该园,更是在濱河造成了極大的恐慌酸舍,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件里初,死亡現(xiàn)場(chǎng)離奇詭異啃勉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)双妨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門淮阐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刁品,你說我怎么就攤上這事泣特。” “怎么了挑随?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵状您,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我兜挨,道長(zhǎng)膏孟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任暑劝,我火速辦了婚禮骆莹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘担猛。我一直安慰自己幕垦,他們只是感情好丢氢,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著先改,像睡著了一般疚察。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仇奶,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天貌嫡,我揣著相機(jī)與錄音,去河邊找鬼该溯。 笑死岛抄,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狈茉。 我是一名探鬼主播夫椭,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼氯庆!你這毒婦竟也來了蹭秋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤堤撵,失蹤者是張志新(化名)和其女友劉穎仁讨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體实昨,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洞豁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了屠橄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片族跛。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锐墙,靈堂內(nèi)的尸體忽然破棺而出礁哄,到底是詐尸還是另有隱情,我是刑警寧澤溪北,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布桐绒,位于F島的核電站,受9級(jí)特大地震影響之拨,放射性物質(zhì)發(fā)生泄漏茉继。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一蚀乔、第九天 我趴在偏房一處隱蔽的房頂上張望烁竭。 院中可真熱鬧,春花似錦吉挣、人聲如沸派撕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽终吼。三九已至镀赌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間际跪,已是汗流浹背商佛。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姆打,地道東北人良姆。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像幔戏,于是被迫代替她去往敵國(guó)和親歇盼。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容