- 本文爲 Marno 原創,轉載必須保留出處!
- 公衆號【 aMarno 】,關注後回覆 RN 加入交流羣
- React Native 優秀開源項目大全:www.marno.cn
1、前言
想必也沒什麼人愛看更新日誌這種東西,因此我直接總結一下好了。總體而言修復了一些以往版本的bug,在Android和iOS平臺上各增長了一些無關痛癢小功能。還宣稱提升了檢測屬性變化的效率,由於屬性變化就意味着從新render,因此按官方的說法此次更新是對屬性變化的檢測也更爲嚴格了。但到什麼程度,還未知。node
至於不少人關心的效率方面,彷佛這個版本並無太大的提高。畢竟屬於平常升級,因此也是情理之中。react
可是亮點仍是有:c++
1.屬性支持百分比參數了,目前僅支持(padding,margin,width,height,minWidth,minHeight,maxWidth,maxHeight,flexBasis)。使用方法:padding:'30%'
2.init project 的時候,能夠選擇建立帶有一些經常使用頁面的模板工程了。可是目前好像模板還比較少,具體能夠看這裏【戳我沒錯】。比較期待這個功能,要是能夠支持自定義模板就行了。git
差很少就這些,想看詳細內容的能夠繼續往下看。想看英文原文的請戳本文最頂部的連接。翻譯的比較水,沒人給校訂,各位隨意看看就行了!github
2、重大變化
iOS/Android雙平臺:web
Android平臺:json
新建立的應用 windowSoftInputMode 默認的模式發生改變。react-native
如今全部經過react-native init所建立新項目,在 Android 平臺上將 Activity 的 windowSoftInputMode 屬性由以前默認的 adjustUnspecified,改成 adjustResize。經過這種 Native 方式解決 Android 上鍵盤遮擋輸入框的問題,而再也不使用JS的解決方式,好比以前用到的 KeyboardAvoidingView組件。緩存
移除 JSBundleLoader.getSourceUrl() 方法。併發
若是你使用到了如下API:
1.JSBundleLoader.getSourceUrl()
2.ReactInstanceManager.getSourceUrl()
3.ReactInstanceManager.getJSBundleFile()
如今必須改成調用:
1.CatalystInstance.getSourceURL()
2.JSBundleLoader.loadScript()
移除 RecyclerViewBackedScrollView 組件
這個組件是好久以前爲了解決 scroll-back-when-data-is-added 這個bug而添加的,可是如今已經直接經過ScrollView內部代碼解決了這個問題。
3、新特性
1.iOS/Android雙平臺:
- WebView 組件新增 injectJavaScript 方法
該方法支持直接向 WebView 組件注入 JS 代碼,可是並不能夠用於在頁面加載完後執行 JS 代碼。
2.Android平臺:
- 讓佈局動畫遵照樣式中設置的不透明度
- Text 組件新增 selectionColor 屬性
- ScrollView組件新增 overScrollMode 屬性
- 實現自定義基線函數的Java綁定
- TextInput:避免二次觸發 onSubmitEditing
- 經過 Native 代碼實現 ScrollView.scrollToEnd
- 支持從Java同步鉤子調用和返回任意類型
- Switch 組件支持 tintColor 和 thumbTintColor 屬性
- Slider組件支持自定義 thumb,track,progress 屬性
- 爲 dynamics 添加 null 檢查
- 在BUCK文件中添加缺乏的導入
- 引入 FallbackJSBundleLoader
- 改進在 Text 組件中嵌套組件時的報錯機制
- 在 pointerEvents 設置後仍容許組件摺疊起來
- 修改 WebView 的 DomStorageEnabled 屬性默認值爲true
- 容許將 view manager 當作 Native模塊訪問
- 不須要 DevSupportManager 去建立一個 DevInternalSettings
- 刪除 ModuleRegistryHolder
- 使 NativeArray 的消費變爲顯式
3.iOS平臺
- 給 AlertIOS.prompt() 方法添加一個 keyboardType 參數
- 爲 RCTEventEmitter 添加使用說明文檔
- 刪除 RCTExecuteOnMainThread 的棄用警告
- 在 RCTTouchHandler 中添加新的方式處理併發手勢識別
- RCTTouchHandler 再也不延遲任何觸摸
- 刪除過時方法 'RCTExecuteOnMainThread'
- 在新 bridge 上禁用RCTPerfMonitor
- 更新 NativeComponentsIOS.md 文檔
- RCTConvert:不推薦使用NSStringArray typedof
- 去除 NativeModules 中的 RK/RCT 前綴
- 添加在app 啓動時開啓 sampling profiler 的選項
- 爲考慮 ABI 兼容性使用 int 代替 NSInterger
- 中止將未使用的 JS 文件複製到 Pods 文件夾中
- 在沒有 bundle 時候顯示 redbox
- 按下從新加載時自動關閉 redbox
- 'cannot calculate shadow efficiently' 再也不會報警告
- 更好的執行 intrinsicContentSize
- 將 setFrame, setLeftTop 等方法棄用或者刪除
- UIManager.measure() 支持任意 zoom 效果下的 view hierarchy
- 向 JS 提供 Native 運行的環境和參數是測試、開發仍是生產環境模式
- 能夠經過配置環境變量禁用 yellow box 警告
4.其餘
- 更新 React 版本到 15.4.1。
- 爲組件的部分屬性添加百分比支持,目前支持(padding,margin,width,height,minWidth,minHeight,maxWidth,maxHeight,flexBasis)。
- JSC堆捕獲將其餘 roots 添加到可視化。
- 爲 ScrollView 和 ListView 添加 scrollToEnd 方法。
- Packager: 內部增長記錄錯誤的程序。
- 在 node_modules 下添加 symlinks 做爲projectRoots 的一部分。
- 添加 cell size 到 JSC heap capture visualization。
- 爲 Navigation.Header.BackButton 添加 style 和 imageStyle 的屬性。
- 能夠經過 'react-native' 命令建立制定類型模板的項目
- 經過 'react-native init' 初始化項目時建立README
- 能夠經過 'react-navigation' 直接建立帶有導航器的項目
- 經過 Yarn 安裝或卸載包
- 經過 package.json 腳本運行程序
- 更快的生成 source map
- High-perf source map builder
- 在 AnimatedValueXY 中添加 removeAllListeners 方法
- 能夠控制 image 的緩存策略
- 支持在Windows上覆制到剪貼板
- 使用 fbjs/lib/invariant 替代 invariant
- 容許在場景堆棧上設置自定義樣式
- 將C ++ bridge 移到oss目錄中
- XHR: support typed arrays for request payloads
- 經過 NativeAnimated 能夠驅動任何數字的屬性
- 確保文檔的連接地址正確
- 避免在 TextInput 中出現空的 _inputRef
- 容許在調試器視圖中使用深色背景
- 當 row 被滑動到關閉的位置時,適當的清除 openRowID
- 取消 SwipeableQuickActions 中對 action 的最大限制(以前限制爲2)
- 容許長寬比超出父組件的邊界
- 將 TextUpdate 的padding 信息轉移到 text input 組件上
- 不限制在大小爲0的父組件中使用 absolute 定位子組件
4、修復Bug
1.iOS/Android雙平臺:
- 修復子組件尺寸溢出父組件時該父組件的大小
- 在 Native 的代碼中修復了 skew transform
2.Android平臺:
- 修復在 dev 模式下 JSC 崩潰問題
- 修復在 startup 時候拋異常的問題
- 修復 ListView 滑動阻塞問題
- 修正在 NativeModulesAndroid.md 文件中的錯別字
- 修復 UIExplorer 進入破碎狀態
- 修復調用 webview.postMessage 時拋出 not a constructor in WebView 的問題
- 修復 TextInput 的佔位字符自定義字體無效的問題
- 修復 UIViewOperationQueue 中的潛在 NPE
- 修復在動畫狀態時的組件使用 LayoutAnimation 動畫開始位置錯位
- 重置 pointerEvents 爲空值
3.iOS平臺
- 修復 TextInput 在開啓校訂功能後自動回調 onChange() 方法的問題
- 修復正式版測試用例:添加 -ObjC and -lc++ 測試目標
- 修復 passThroughTouches
- 修復 nil TVView on pop
- 修復在編譯時關於索引類型不正確的警告
- 經過添加 __unused args 標記來修復其餘編譯警告
- 使 CocoaPods 可用
4.其餘
- 糾正 PixelRatio.md 中的拼寫錯誤
- 修復在 VerticalSwipeJump 模式下手勢返回方向錯誤的問題
- 修復 node4 上的打包程序崩潰的問題
- 修復經過 HTTP 加載 minified bundle 的問題
- 修復在使用 min-size 約束時換行的計算方式
- 修復 skew transformation
- 糾正在 Yoga classes 中的拼寫錯誤
- 糾正 webview 示例中字符串信息的拼寫錯誤
- 糾正 ResolutionRequest.js 中的拼寫錯誤
- 修復在 align-item 或 justify-content 使用center或flex-end時 absolute position 出現的問題
- 修復導航器場景被錯誤地摺疊
- 修復使用 margin 時的長寬比不許確的問題
- 修復 app 無端崩潰的問題(終於修復了!!!)
- 打破僅在調試環境中發生的無限循環