【0.44】React Native 中文更新日誌

Marno發表於2017-05-08
  • 本文為 Marno 原創,轉載必須保留出處!
  • 公眾號 aMarno,關注後回覆 RN 加入交流群
  • React Native 優秀開源專案大全:www.marno.cn

一、導讀


本次更新亮點:

  1. 在 IOS 上徹底移除了
  2. 對 FlatList 進行優化:比如支援固定頭部等

個人感覺這期更新基本可以忽略了!可以忽略了!可以忽略了!

二、重大變化


  • 移除對 @provides 的支援

    如果你使用了 @provides NameOfModule,那現在必須使 @providesModule 來代替了。

  • 當 native 程式碼確實呼叫了 dispatched 時才回撥 batchDidComplete

  • 移除 MapViewIOS(iOS

    元件被宣告為過期已經有一段時間了,所以在這次 release 版本中直接移除了。

三、新特性


Android平臺

  • PickerAndroid: 在通過 positon 獲取子元件前將子元件先轉換成陣列
  • 允許例項化 DeviceInfoModule 時只傳入一個 Context
  • 在文件中新增關於如何將包含 RN 程式碼的安卓模組部署到 Nexus 或 Maven 倉庫的說明
  • Profiler: 移除舊的對分析器程式碼
  • Profiler: 通過 RN 包聯結器下載檔案
  • 當使用 timer 計時超過 1 分鐘時在警告中提示可以使用 AlarmManager 來設定更長時間的計時任務。
  • 抽取 PackagerConnectionSettings 類確保可以更方便的重用 PackagerConnection 模組
  • 保證 ResourceDrawableIdHelper 是執行緒安全的
  • 如果沒有需要清理的 frame callback 則不呼叫 clearFrameCallback() 方法
  • 根據文件將 PositionError 更新為物件
  • 通過手動進行字串和列舉之間的轉換來優化 ReactShadowNode
  • Set hasNewLayout on children when changing their layout due to display none parent
  • 將 ReactMarker 中的字串對比換為使用列舉型別進行比較
  • 讓 SystraceRequestListener 繼承 BaseRequestListener

iOS平臺

  • Better TextInput: 將 TextInput 和 RCTUITextView 解耦
  • Better TextInput: 改進 RCTUITextView 中 placeholder 的功能
  • Better TextInput: 從 RCTTextView 中移除冗餘的 UIScrollView
  • Better TextInput: 支援自動擴充套件高度
  • Better TextInput: 固定多行模式下的行間距,為自動擴充套件功能做準備
  • 當在 mainBundle 中找不到 assets 時,對 mainBundle 以外進行搜尋
  • Native Animated: 新增單元測試
  • Native Animated: 在 iOS 上當移除屬性後將值重設為預設值
  • 新增 iOS 使用 Linking 開啟地理座標的示例程式碼
  • 將 RCTLinkingManager 移動到主執行緒
  • Make Cxx modules lazy on iOS
  • 在 RCTUtils 提供 RCTImageLocalAssetURL 方法
  • RCTRootView is now has empty autoresizing mask by default
  • NavigatorIOS: 移除 NavigationContext
  • 提升 iOS 上滾動時的使用體驗
  • 讓 run-ios --device 示例更容易被複制
  • 將 RCTPlatform.isTesting 和 RCTRunningInTestEnvironment 進行合併
  • 將 xcode 依賴從 0.8.9 更新到 0.9.1,解決了 npm
    安裝時出現 WARN deprecated node-uuid@1.4.7: Use uuid module instead
  • 按照 xcode 的預設格式對 plist 進行縮排
  • 將 bindKeys 移動到 RCTBridge setUp
  • Add missing toggleElementInspector event send when jsLoaded
  • 對 listeners 的數量進行迅速地調整
  • Make the choice of bridge based on an optional delegate method
  • 提供從通知中心移除通知的能力
  • 支援對 scale 設定負數 (transform style property)

iOS / Android 通用

  • Website: 清理程式碼, 新增單元測試, 移除對 sass 的依賴
  • 新增了對 View.* static accessibility traits accessors 的棄用警告
  • 移除了官網文件中對 Navigator 的使用推薦
  • 新增一個類 DeviceInfo 專門提供螢幕尺寸,字型縮放等資訊
  • 新增對巢狀了樣式的動畫的支援
  • 新增 React Native 特徵標記來進行 Stack 和 Fiber 之間的切換
  • 在 cli 設定中支援自定義 local server 的日誌記錄工具
  • 刪除未使用的 onNativeException() 方法
  • 當載入模組異常時在報錯資訊中顯示模組全名,代替之前的模組 ID
  • 更好的說明關於顯示 systrace
  • 使用 Fiber 時支援字串型別的返回值
  • 如果模組 require 失敗,不吞嚥錯誤
  • 不載入 native 模組作為 CS bundle 的一部分
  • 使用 fbjs/lib/invariant代替 invariant
  • Packager: GlobalTransformCache: 忽略與 fecthing 相關的錯誤
  • Packager: GlobalTransformCache: reduce asynchronicity for non-cached bundles
  • Packager: 清除快取
  • Packager: GlobalTransformCache-test: 禁用非確定性測試
  • Packager: Package.js: 覆蓋錯誤情況
  • Packager: Module.js: 覆蓋錯誤情況
  • Packager: TerminalReporter: 停止報告全域性快取的錯誤
  • Packager: ResolutionRequest.js: 將 _resolveNodeDependency() 變為同步的方式
  • Packager: ResolutionRequest.js: 將 resolveDependency() 變為同步
  • Packager: TransformCache: 不要每一次都對 transformOptions 進行rehash
  • Packager: TransformCache: 使用 sha1 代替 murmurhash
  • Packager: GlobalTransformCache: 重試通過 keys 進行 fetches
  • Packager: 將 Module 中 read() 方法變為同步方式
  • 使用 Object.assign 代替 copyProperties
  • 在開發模式下只使用 EventValidator
  • FlatList: 不傳入 getItemLayout 時 scrollToIndex 無效
  • FlatList: 支援固定頭部
  • FlatList: 當資料發生變化時清除對 onEndReached 的回撥

    很多人也發現了,之前使用 FlatList 時,在滑到底部後會連續回掉 onEndReached,這次應該是修復好了。

  • FlatList: 移除 shouldItemUpdate 方法
  • FlatList: 快速滑動並切換 numColumns 時顯示有用的錯誤資訊
  • 使用 checkPropTypes 代替直接呼叫 PropTypes
  • 將 View 中的 propTypes 移到 ViewPropTypes 中
  • 從 react-native-implementation 中移除 React 外掛
  • 改進 debugger 的深色背景模式
  • 修復 Fiber 中 findNodeHandle() 出現的 bug
  • 徹底移除 NavigationExperimental
  • 在 React Native 渲染器中提供 ViewPropTypes 物件
  • 允許重寫 NativeModules
  • 將 takeSnapshot 方法從 UIManager 移動到 ReactNative
  • 移除 CustomComponents 資料夾和證照
  • 重構 Chrome 的偵錯程式的 JS 程式碼
  • 在 Windows 使用者使用 local-cli 時停止顯示 yarn 的錯誤資訊
  • 當棧結構中沒有檔案的時,避免出現致命的 YellowBox 錯誤
  • 重新新增"空檢查"來避免 EventPropagators 出現 bug
  • 在 red box 中顯示更多有意義的報錯資訊
  • Yoga:在 java 程式碼中暴露 UseWebDefaults
  • Yoga:在沒有新的佈局時不將佈局輸出傳輸到 java
  • Yoga:Don't transfer layout outputs to java for unset edges
  • Yoga:修復當子元件超出父元件時使用 align-content: center, flex-end 顯示不正確的問題
  • Yoga:當節點被移除時使佈局無效
  • Yoga:重置的時候將屬性設為 Web 預設的方式

四、修復 Bug


Android平臺

  • 修復類似華為P9上出現的 java.lang.RuntimeException: Tried to get non-existent cookie 異常
  • Apply numeric text event bubbling fix
  • CLI: 更新 runAndroid.js 修復 startServerInNewWindow 的問題
  • 在 StackTraceHelper.convertJsStackTrace 中不奔潰
  • 修復當 native 程式碼修改一個被 JS 移除的 modal 大小時導致的奔潰
  • 修復在 Nodes 中 FrescoModule 沒有初始化的問題
  • 修復 ReactShadowNode.toString() 方法報 NullPointerException
  • 修復 ClassCastException in ReactModuleSpecProcessor (379b60d)
  • 修改 Fresco 中 width 和 height 的順序

iOS平臺

  • 修復當 RCTPicker 中 item 為 0 時滑動導致的奔潰問題
  • 修復在 RCTDevSettings 中獲取屬性許可權時的警告
  • 修復在 RCTJSCExecutor 上重寫 native 模組時的奔潰問題
  • 修復使用 native 的 timing 動畫時在 iOS 上發生延時的問題
  • 修復 RCTJSStackFrame::stackFrameWithDictionary 中導致奔潰的問題
  • 修復在 RCTRedBox::formatFrameSource 中的奔潰問題
  • 修復 ReactCxx xcodeproj 工程
  • 修復官方 UIExplore xcodeproj 工程中的各種警告
  • NativeAnimated: Fix missing update at the end of the batch
  • 修復當歸檔時 bridge headers 出現的問題
  • 修復因為設定 scale 為 0 的 transfrom 動畫時破壞 hitTest 機制的問題

iOS / Android 通用

  • 修改在 navigation 文件中的拼寫錯誤
  • 將 TextInput 的 'defaultValue' 屬性修改 'string' 型別
  • 修復 YellowBox 佈局使得在其開啟的時候不會影響 app 的佈局
  • FlatList: 修復 ItemSeparators 重複的問題
  • FlatList: 修復 minimumViewTime
  • FlatList: 修復在元件重新繪製時觸發 Animated.event 的 attach / detach
  • npm start -- --reset-cache 命令中新增 --
  • 修復在 Linking 中關於 getInitialURL 返回值的誤導
  • FlatList: 修復因為 nodeHandle 引發的奔潰
  • 修復 ReactComponentWithPureRenderMixin 的使用(react-navigation 與0.43 不相容的問題就在這裡)
  • 修復 "Running on a device" 文件中的語法錯誤
  • Website: 修復官網中 Showcase 板塊中在 Safari 中圖示不能顯示的問題
  • 修復 PerformanceLogger 清理未完成的事件
  • Animated: 新增缺失的 super 方法呼叫來修復原生動畫奔潰的問題
  • 修復 ReactNativeEventEmitter 中當 org. 例項消失時不分發事件的問題

【0.44】React Native 中文更新日誌

相關文章