1

一、导读


本次更新亮点:

  1. 在 IOS 上彻底移除了<MapViewIOS />

  2. 对 FlatList 进行优化:比如支持固定头部等

个人感觉这期更新基本可以忽略了!可以忽略了!可以忽略了!

二、重大变化


  • 移除对 @provides 的支持

如果你使用了 @provides NameOfModule,那现在必须使 @providesModule 来代替了。

  • 当 native 代码确实调用了 dispatched 时才回调 batchDidComplete

  • 移除 MapViewIOS(iOS

<MapView /> 组件被声明为过期已经有一段时间了,所以在这次 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. 实例消失时不分发事件的问题



Marno
6 声望7 粉丝