- 本文爲 Marno 原創,轉載必須保留出處!
- 公衆號【 Marno 】,關注後回覆 RN 加入交流羣,等你來!
- React Native 優秀開源項目大全:www.marno.cn
導讀
好久沒有翻譯過更新日誌了,主要我確實抽不出這麼多的時間來。翻譯更新日誌是很是消耗時間的一件事。以前我在翻譯的時候,基本上會把全部更新內容都看一遍,不僅是列表裏的內容,而是每一個 commit 詳情內容都會看。有時候若是更新內容特別多,加上我只有晚上下班後纔有時間,因此一篇更新日誌就差很少得一週的時間才能翻譯完。
java
之因此這麼認真,是我以爲這是一件有意義的事情,更新日誌對於關注和使用 RN 的人來講仍是挺重要的,不過最開始作的時候,主要仍是由於我也用得着,反正都看了,就順便翻譯了好了,說不定還有人會看。並且衆所周知的緣由,若是不仔細研究下到底更新了什麼,就貿然升級版本,那種感覺…真的很心累!node
劃重點
- 增強核心組件對 Flow type 的使用
- ScrollView,CameraRollView 和 SwipeableRow 發生重大變動,在調用某些方法時,再也不綁定組件實例
- WebKit 支持雙向 TLS 驗證
- 從 /assets 以外的目錄提供資源
- 修復大量奔潰,以及解決了一些意外
新增
通用react
- 增長 publicPath 屬性,以支持從不一樣的位置加載靜態 assets
Androidandroid
-
Bundler 服務支持 Android 系統級屬性 ,使在多個 App 間調試程序變得更加簡單
web
-
Native Modules 如今支持在調用 promise.reject 的時候添加一個 WritableMap 類型的額外參數 (userInfo)。具體能夠查看 Promise.java 中的實現方法。而後在 JavaScript 中能夠經過 Error.userInfo 的方式獲取這個參數。iOS 已經實現該功能。
react-native
-
Native Modules 如今將 nativeStackAndroid 屬性暴露給使用 Exception / Throwable 拒絕的promise, 使 Javascript 能夠經過 Error.nativeStackAndroid 顯示 Native 的錯誤堆棧信息。iOS 能夠參考 Error.nativeStackIOS。promise
iOS安全
- 將 moduleForName: lazilyLoadIfNecessary 添加到 RCTBridge.h 中,以便按名稱查找模塊並強制加載它們。以及其它對 LazyLoading 大量的改進。
- 爲 WebView 增長 setClientAuthenticationCredential 方法,以便於在開啓 WebKit={true} 時進行雙向TLS身份驗證
修改
通用服務器
- 增強核心組件對 Flow type 的使用
- 大量公共組件都轉換爲 ES6 類( ScrollView,CameraRollView,SwipeableRow,ProgressBarAndroid,ProgressViewIOS,SegmentedControllIOS,ToolbarAndroid)
- Flow 版本升級爲 v0.86.0
- metro 版本升級爲 v0.49.1
- jest 版本升級爲 v24.0.0-alpha.6
- fbjs-scripts 版本升級爲 v1.0.0
- folly 版本升級爲 v2018.10.22.00
- 同步 React 版本爲 16.6.1
- 在 Hot Reloding 時清除錯誤消息(上週五試用了 0.58 後發現 reloading 有時候會失效,多是這裏出現了 bug)
- CxxModules 的方法中能夠添加兩個 callback 函數了
重大變化websocket
已經轉換爲 ES6 組件類中,有些公有方法再也不綁定該組件的實例。受此影響的方法有:
在 ScrollView 中:setNativeProps / getScrollResponder / getScrollableNode / getInnerViewNode / scrollTo / scrollToEnd / scrollWithoutAnimationTo / flashScrollIndicators。
在 CameraRollView 中:rendererChanged。
在 SwipeableRow 中:close。
所以,在方法中經過引用這些方法這些方法當作引用經過引用將這些方法做爲回調傳遞給函數已再也不安全。組件實例的自動綁定方法是createReactClass的一種行爲,咱們決定在切換到ES6類時不保留這種行爲。
Android
- 優化 PlatformConstants.ServerHost, PlatformConstants.isTesting 和 PlatformConstants.androidID 的性能
iOS
- 將 RCTLogWarn() 改成 RCTLogInfo()
移除
- 移除 UIManager.measureViewsInRect(),由於已經好久沒有人用它了
修復
- 修復 Yoga JNI bindings 中潛在的可能致使 UI 線程停滯的問題
- 修復在 cxx module 註冊時因 race condition 致使的 crash
- View 和 Text 的 displayName 返回明確的名字
- 修復 CLI 執行
react-native init --help
返回 undefined 的問題
- 修復 CLI 執行
react-native start
時不識別 --sourceExts
- 修復 Modal 的 visible 屬性爲 undefined 或 null 是仍會意外彈出
- 修復 VirtualizedList 加載分頁數據時的崩潰
- 修復在調試模式下及計算差別 bundle 時,移除一個 module 致使錯誤堆棧信息的問題
Android
- 修復移除 root nodes 時致使的崩潰
- 修復 ReactInstanceManager 中多個 deadlocks 和 race conditions 問題
- 修復 ReactModalHostView 和 DialogManager 在 dismissing 時出現的 IllegalArgumentException
- 修復因使用 Android Gradle Plugin 3.2 而致使不能正確的合併資源路徑
- 修復 HTTP 鏈接 ontimeout 回調的問題
- 當遠程服務器開始關閉時,正確的將 websocket 關閉
- 修復 Android SDK16 設備的兼容性問題
- Image.resizeMode 再也不默認爲 ScaleType.CENTER,會致使多餘的 padding
- 修復 Android SDK28 上反向的 ScrollView 不能朝正確方向滾動的問題
iOS
- 修復某些狀況下 inline view 沒有從新開始的問題
- 修復使用前置攝像頭致使 ImagePickerIOS 預覽和渲染圖像不一致的問題
- 修復 iOS11 及以前的版本上關閉 JSC 時的 race conditions 和 crash
- 修復 NetInfo 中 _firstTimeReachability 致使的崩潰
- 修復 inline view 不能正確隱藏的問題
- 修復 ScrollView 的 offsets 直接引用內容 offsets 致使的奔潰
推薦閱讀: