- 本文为 Marno 原创,转载必须保留出处!
- 公众号【 Marno 】,关注后回复 RN 加入交流群,等你来!
- React Native 优秀开源项目大全:www.marno.cn
导读
好久没有翻译过更新日志了,主要我确实抽不出这么多的时间来。翻译更新日志是很是消耗时间的一件事。以前我在翻译的时候,基本上会把全部更新内容都看一遍,不仅是列表里的内容,而是每一个 commit 详情内容都会看。有时候若是更新内容特别多,加上我只有晚上下班后才有时间,因此一篇更新日志就差很少得一周的时间才能翻译完。
java
之因此这么认真,是我以为这是一件有意义的事情,更新日志对于关注和使用 RN 的人来讲仍是挺重要的,不过最开始作的时候,主要仍是由于我也用得着,反正都看了,就顺便翻译了好了,说不定还有人会看。并且众所周知的缘由,若是不仔细研究下到底更新了什么,就贸然升级版本,那种感觉…真的很心累!node
划重点
- 增强核心组件对 Flow type 的使用
- ScrollView,CameraRollView 和 SwipeableRow 发生重大变动,在调用某些方法时,再也不绑定组件实例
- WebKit 支持双向 TLS 验证
- 从 /assets 以外的目录提供资源
- 修复大量奔溃,以及解决了一些意外
新增
通用react
- 增长 publicPath 属性,以支持从不一样的位置加载静态 assets
Androidandroid
-
Bundler 服务支持 Android 系统级属性 ,使在多个 App 间调试程序变得更加简单
web
-
Native Modules 如今支持在调用 promise.reject 的时候添加一个 WritableMap 类型的额外参数 (userInfo)。具体能够查看 Promise.java 中的实现方法。而后在 JavaScript 中能够经过 Error.userInfo 的方式获取这个参数。iOS 已经实现该功能。
react-native
-
Native Modules 如今将 nativeStackAndroid 属性暴露给使用 Exception / Throwable 拒绝的promise, 使 Javascript 能够经过 Error.nativeStackAndroid 显示 Native 的错误堆栈信息。iOS 能够参考 Error.nativeStackIOS。promise
iOS安全
- 将 moduleForName: lazilyLoadIfNecessary 添加到 RCTBridge.h 中,以便按名称查找模块并强制加载它们。以及其它对 LazyLoading 大量的改进。
- 为 WebView 增长 setClientAuthenticationCredential 方法,以便于在开启 WebKit={true} 时进行双向TLS身份验证
修改
通用服务器
- 增强核心组件对 Flow type 的使用
- 大量公共组件都转换为 ES6 类( ScrollView,CameraRollView,SwipeableRow,ProgressBarAndroid,ProgressViewIOS,SegmentedControllIOS,ToolbarAndroid)
- Flow 版本升级为 v0.86.0
- metro 版本升级为 v0.49.1
- jest 版本升级为 v24.0.0-alpha.6
- fbjs-scripts 版本升级为 v1.0.0
- folly 版本升级为 v2018.10.22.00
- 同步 React 版本为 16.6.1
- 在 Hot Reloding 时清除错误消息(上周五试用了 0.58 后发现 reloading 有时候会失效,多是这里出现了 bug)
- CxxModules 的方法中能够添加两个 callback 函数了
重大变化websocket
已经转换为 ES6 组件类中,有些公有方法再也不绑定该组件的实例。受此影响的方法有:
在 ScrollView 中:setNativeProps / getScrollResponder / getScrollableNode / getInnerViewNode / scrollTo / scrollToEnd / scrollWithoutAnimationTo / flashScrollIndicators。
在 CameraRollView 中:rendererChanged。
在 SwipeableRow 中:close。
所以,在方法中经过引用这些方法这些方法当作引用经过引用将这些方法做为回调传递给函数已再也不安全。组件实例的自动绑定方法是createReactClass的一种行为,咱们决定在切换到ES6类时不保留这种行为。
Android
- 优化 PlatformConstants.ServerHost, PlatformConstants.isTesting 和 PlatformConstants.androidID 的性能
iOS
- 将 RCTLogWarn() 改成 RCTLogInfo()
移除
- 移除 UIManager.measureViewsInRect(),由于已经好久没有人用它了
修复
- 修复 Yoga JNI bindings 中潜在的可能致使 UI 线程停滞的问题
- 修复在 cxx module 注册时因 race condition 致使的 crash
- View 和 Text 的 displayName 返回明确的名字
- 修复 CLI 执行
react-native init --help
返回 undefined 的问题
- 修复 CLI 执行
react-native start
时不识别 --sourceExts
- 修复 Modal 的 visible 属性为 undefined 或 null 是仍会意外弹出
- 修复 VirtualizedList 加载分页数据时的崩溃
- 修复在调试模式下及计算差别 bundle 时,移除一个 module 致使错误堆栈信息的问题
Android
- 修复移除 root nodes 时致使的崩溃
- 修复 ReactInstanceManager 中多个 deadlocks 和 race conditions 问题
- 修复 ReactModalHostView 和 DialogManager 在 dismissing 时出现的 IllegalArgumentException
- 修复因使用 Android Gradle Plugin 3.2 而致使不能正确的合并资源路径
- 修复 HTTP 链接 ontimeout 回调的问题
- 当远程服务器开始关闭时,正确的将 websocket 关闭
- 修复 Android SDK16 设备的兼容性问题
- Image.resizeMode 再也不默认为 ScaleType.CENTER,会致使多余的 padding
- 修复 Android SDK28 上反向的 ScrollView 不能朝正确方向滚动的问题
iOS
- 修复某些状况下 inline view 没有从新开始的问题
- 修复使用前置摄像头致使 ImagePickerIOS 预览和渲染图像不一致的问题
- 修复 iOS11 及以前的版本上关闭 JSC 时的 race conditions 和 crash
- 修复 NetInfo 中 _firstTimeReachability 致使的崩溃
- 修复 inline view 不能正确隐藏的问题
- 修复 ScrollView 的 offsets 直接引用内容 offsets 致使的奔溃
推荐阅读: