本文为 Marno 原创,转载必须保留出处!
公众号 aMarno,关注后回复 RN 加入交流群
简书专题《 React-Native 开发阵营 》,欢迎关注和投稿
React Native 优秀开源项目大全:http://www.marno.cn
一、导读
本次更新亮点:
在 IOS 上彻底移除了<MapViewIOS />
对 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. 实例消失时不分发事件的问题
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。