react-native版本遷移教程

如果在學(xué)習(xí)react-native的過程中遇到什么問題做鹰,歡迎加入QQ群397885169一起學(xué)習(xí),一起成長。

識兔已經(jīng)更新到0.57了哦并扇,歡迎star

識兔,一款用來識別圖片的開源項目抡诞,在未來還會添加更多有意思的東西

welfare.gif

前言

react-native在三天前穷蛹,也就是2018.9.12號更新了0.57.0版本,這個版本終于正常的兼容了babel7昼汗,解決了0.56版本使用mobx等裝飾器需要各種配置的問題肴熏。

主要更新(合并0.56版本和0.57版本重要的修復(fù))

  • TextInput不能輸入中文的問題

  • TextInput.clear()TextInput.setNativeProps({text: ''})不能正常使用的問題

  • 更新iOS最低兼容到iOS9

  • WebView添加WKWebView,通過useWebKit={true}開啟

  • 為安卓添加overflow

  • 為安卓Image添加默認(rèn)占位圖defaultSource顷窒,但是在debug下是看不到的蛙吏,只有在release中才能看到

  • 安卓現(xiàn)在TextInputunderlineColorAndroid默認(rèn)為透明(終于不用手動更改了)

  • 打開Modal可以覆蓋狀態(tài)欄層?

  • 修復(fù)Modal+ FlatList滾動

  • 導(dǎo)出FlatListSectionList的動畫,
    現(xiàn)在支持Animated的組件包括了View鸦做,Text励烦,ImageScrollView泼诱,FlatList坛掠,SectionList

以上是0.560.57版本坷檩,我整理的主要更新却音,更詳細(xì)的更新日志,請參考官方日志矢炼。

項目升級

升級

開發(fā)react-native經(jīng)常會遇到升級新版本系瓢,官方提供了命令行的升級方式,我管這種叫做升級句灌,這種方式的好處就是傻瓜式夷陋,執(zhí)行命令行就可以自動升級版本了,但這個方式的缺陷也很明顯胰锌,如果升級中出現(xiàn)問題骗绕,很難排查錯誤。所以资昧,我更推薦第二種方式酬土。

遷移

遷移:顧名思義,搬遷移動格带,流程就是撤缴,新建個項目,把原有項目中的更改叽唱,慢慢搬家屈呕,搬到新的項目中,這樣的壞處很明顯棺亭,很慢虎眨,才做過程中,可能會有遺忘镶摘,但是這樣方式嗽桩,更方便管理,流程出現(xiàn)錯誤凄敢,只要對著原項目更改就可以了碌冶,更可控。

0.57版本遷移教程

未使用裝飾器

如果你的項目中贡未,沒有用到Mobx种樱,這種需要es6裝飾器語法支持的三方庫或者方法,那么恭喜你俊卤,只要你完整的遷移項目就可以了嫩挤,除了YellowBox會給你造成一點麻煩外,基本不會遇到其他問題的消恍,如果真的遇到問題啦岂昭,歡迎加群,咱們一起討論解決辦法狠怨。

使用裝飾器

如果你的項目使用了裝飾器约啊,那么也要恭喜你,順利的度過了0.56版本的那個深坑佣赖,在0.57版本中恰矩,要修改的東西相對于0.56少了很多。

接下來憎蛤,就說明下操作步驟外傅。

  • 首先,需要安裝下面的4個babel庫俩檬,因為從0.56版本開始萎胰,react-native默認(rèn)支持bable7,之前的寫法都不對了棚辽。

package.json

@babel/core
@babel/plugin-proposal-decorators
@babel/plugin-transform-runtime
@babel/runtime
  • 其次技竟,要修改babelrc文件,更新幾個參數(shù)就好屈藐。.文件在mac上是默認(rèn)隱藏的榔组,所以,你可能需要打開IDE估盘,不管是webstrom還是vscode都可以瓷患。

  • 完成下面這步就可以正常的使用裝飾器啦!但是最后一步才是最重要的遣妥!

.babelrc

{
  "presets": ["module:metro-react-native-babel-preset"],
  "plugins": [
    ["@babel/plugin-proposal-decorators", { "legacy": true }],
    ["@babel/transform-runtime", {
      "helpers": true,
      "regenerator": false
    }]
  ]
}
  • 修復(fù)App入口文件擅编,默認(rèn)是index.js。這也是個bug箫踩,如果不添加如下代碼爱态,會導(dǎo)致release包無法正常運行。詳細(xì)信息可以參考這個issues境钟,解決辦法comment
import applyDecoratedDescriptor from '@babel/runtime/helpers/esm/applyDecoratedDescriptor';

import initializerDefineProperty from '@babel/runtime/helpers/esm/initializerDefineProperty';

Object.assign(babelHelpers, { applyDecoratedDescriptor, initializerDefineProperty });

const App = require('./app/index').default;

AppRegistry.registerComponent(appName, () => App);

小技巧

新版本中锦担,對YellowBox做了增強,項目中有各種問題都會暴露出來慨削,可以使用YellowBox.ignoreWarnings(['Require cycle:'])關(guān)閉一波洞渔。

iOS升級可能遇到的問題

1. 缺少libfishhook.a文件

error: Build input file cannot be found: '/Users/Rabbit/Desktop/DouXi/node_modules/react-native/Libraries/WebSocket/libfishhook.a'

找不到libfishhook.a套媚,如果經(jīng)常開發(fā),可能知道要手動添加磁椒,但是手動添加到主目錄是沒用的堤瘤,要參考下兩圖哦!

修復(fù)錯誤1.jpg

修復(fù)錯誤2.png

這里參考了這篇文章

2. 'config.h' file not found

老生常談的問題浆熔,缺少third-party文件(如果不知道是什么本辐,請點擊該鏈接),但很多人手動添加并且重啟后還是不行医增,這是少執(zhí)行了一個sh腳本慎皱。

cd node_modules/react-native/third-party/glog-0.3.4
../../scripts/ios-configure-glog.sh

可能有些開發(fā)者的本地glog版本不是0.3.4,所以叶骨,這里要對應(yīng)你本地的版本才可以

查看glog本地版本的方法
cd ./rncache
open .

這個問題是XCode10導(dǎo)致的茫多,每次編譯項目都要執(zhí)行上面的代碼太過于麻煩,所以忽刽,可以把上面的代碼寫到package.json中地梨,如下

...
"scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "build": "cd node_modules/react-native/third-party/glog-0.3.5/ && ../../scripts/ios-configure-glog.sh",
    "test": "jest"
  },
...

3. 如下圖,缺少@runtime

9EE9A1A0192EF593DE4ED99D7E2EC795.jpg

解決辦法就是安裝下咯缔恳。
yarn add @babel/runtime 或者 npm install @babel/runtime

總結(jié)

0.57是個很棒的版本宝剖,之后會瘋狂安利,react-native也在重構(gòu)歉甚,真心希望可以解決現(xiàn)在存在的各種痛點万细。

如果在學(xué)習(xí)react-native的過程中遇到什么問題,歡迎加入QQ群397885169一起學(xué)習(xí)纸泄,一起成長赖钞。

我開源的項目識兔在昨天完成0.57版本的更新,歡迎star哦聘裁!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末雪营,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子衡便,更是在濱河造成了極大的恐慌献起,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件镣陕,死亡現(xiàn)場離奇詭異谴餐,居然都是意外死亡,警方通過查閱死者的電腦和手機呆抑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門岂嗓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鹊碍,你說我怎么就攤上這事厌殉∈陈蹋” “怎么了?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵公罕,是天一觀的道長炫欺。 經(jīng)常有香客問我,道長熏兄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任树姨,我火速辦了婚禮摩桶,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘帽揪。我一直安慰自己硝清,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布转晰。 她就那樣靜靜地躺著芦拿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查邢。 梳的紋絲不亂的頭發(fā)上蔗崎,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天,我揣著相機與錄音扰藕,去河邊找鬼缓苛。 笑死,一個胖子當(dāng)著我的面吹牛邓深,可吹牛的內(nèi)容都是我干的未桥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼芥备,長吁一口氣:“原來是場噩夢啊……” “哼冬耿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起萌壳,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤亦镶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后袱瓮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體染乌,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年懂讯,在試婚紗的時候發(fā)現(xiàn)自己被綠了荷憋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡褐望,死狀恐怖勒庄,靈堂內(nèi)的尸體忽然破棺而出串前,到底是詐尸還是另有隱情,我是刑警寧澤实蔽,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布荡碾,位于F島的核電站,受9級特大地震影響局装,放射性物質(zhì)發(fā)生泄漏坛吁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一铐尚、第九天 我趴在偏房一處隱蔽的房頂上張望拨脉。 院中可真熱鬧,春花似錦宣增、人聲如沸玫膀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽帖旨。三九已至,卻和暖如春灵妨,著一層夾襖步出監(jiān)牢的瞬間解阅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工泌霍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓮钥,地道東北人。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓烹吵,卻偏偏與公主長得像碉熄,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子肋拔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353

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