【0.42】React Native 中文更新日誌

  • 本文爲 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 無端崩潰的問題(終於修復了!!!)
  • 打破僅在調試環境中發生的無限循環

相關文章
相關標籤/搜索