ReactNative 0.62.x版本新特性整理

版本新特性介绍

0.62.0

简介

  • 支持了Flipper
  • 升级了新的日志框
  • 加入了黑暗模式的支持

由于这个版本是疫情期间发布的(3.27),因此感谢了这个版本的贡献者,并且提供了一个issue,如果新版本有问题可以在这里提出(https://github.com/react-native-community/releases/issues/179)。

另外还提供了新的rn版本升级工具,这个工具是一个网站选择完成升级的版本之后,会列出所有升级改动到的地方,可以一个一个进行修改,修改完一个项目后,可以在这个网站上直接打钩去掉。
https://react-native-community.github.io/upgrade-helper/

如果升级过程中有什么问题,facebook还另外建立了一个github项目专门收集升级过程中遇到的问题
https://github.com/react-native-community/upgrade-support

详细修改点

  • 支持了Flipper
    Flipper是用于开发者的调试工具,在这个版本可以支持新创建的或者是已存在的RN工程,其功能大概描述如下:
  1. 可以直接重新reload代码或者是打开Dev Menu(就是摇一摇会弹出的那个菜单)
  2. 崩溃报告,可以手机App在运行中的崩溃信息
  3. 可以使用最新的React DevTools(这一条不太理解,好像意思是说可以用来调试react项目)
  4. 可以监听app的网络请求,进行展示
  5. 可以观察原生的界面布局
  6. 数据库和配置信息的监控
  • 黑暗模式的支持

新增了黑暗模式的支持,目前看来有两种方式来适配黑暗模式:

  1. 使用Appearance.getColorScheme();方法可以直接获取到当前模式是light或者dark,然后给与不同的组件或者属性
  2. 直接在渲染界面的时候使用useColorScheme();函数会返回一个是什么模式的字符串,而且会随着切换自动重新选软界面(待验证)
  • 更换了苹果电视盒子应用支持的位置
    原先苹果电视盒子应用是直接在初始化项目的时候就支持的,0.62.0后RN将它移到了react-native-community/react-native-tvos这个依赖中。如果你的项目需要支持tvOS,就可以通过集成这个依赖来使用。

依赖地址:https://github.com/react-native-tvos/react-native-tvos

  • 建立了升级支持项目
    见简介描述

  • 添加了新的日志错误和警告框
    如果需要启用,需要在index.js里面加入:

require('react-native').unstable_enableLogBox()
  • 升级了React DevTool
    升级版本号为4,官方描述上是说提供了显著的性能提升、改进的导航体验,以及对React钩子的全面支持。
    这是一个开发者使用的工具,具体工具用法还没有预研,后续可以针对这个工具做一下预研。

  • 对无障碍功能进行了优化
    具体的无障碍功能还需要详细了解,官方文档如下:

Accessibility improvements: We’ve made improvements to accessibility including adding accessibilityValue, missing props on Touchables, onSlidingComplete accessibility events, and changing the default role of Switch component from "button" to "switch".
  • 正在移除propTypes
    RN正在计划着移除propTypes在核心组件中的使用,主要是因为这些代码可能会影响到核心组件的代码大小。后续RN主要尝试使用静态的类型检查来替换动态的类型检查。

  • 移除了accessibilityStates属性
    主要也和无障碍功能相关,目前具体还没有了解过无障碍功能,暂时先不做详细了解。

  • TextInput组件里面的onTextInput回调移除
    这个回调主要是在input组件渲染出来之后的回调,但是目前看来没有什么用处,而且这样的命名或者使用方式并不符合w3c的标准,因此需要移除掉这个组件。官方给出的原因原文如下:

This is the first diff in the series. It removes Flow types for this feature to verify that we actually do not have any usages. After it lands, we will remove actual support on the native side.

There are several reasons why removing it is a good idea:
* There is no any evidence that this feature is actually useful. That was discussed several times (e.g. see T7936714) during RN lifetime and the overall consensus is: We need something else, something like sync `onChange` event instead of it.
* Supporting the previous point, it's not used (at least inside Facebook). I searched hard and I could find only one place where it's used: in the TextInput Example.
* To deliver more functionality we should lean towards W3C specs, this one is not W3C compliant.
* Supporting this Feature in Fabric is quite challenging, so I want to do it sooner than later.
* This feature was never documented.
  • AccessibilityInfo.fetch
    这个方法已废弃,调用效果与isScreenReaderEnabled一致,查询是否开启了朗读功能。也是无障碍功能的一部分。

  • 动画优化
    要求一定要传递useNativeDriver参数,否则会打印一条警告在控制台上。此举主要是为了最终将这个值做成默认值。

  • getNode方法废弃
    由于这个是一个内部方法,因此使用ref或者Animated的时候使用的这个方法会被废弃。

0.62.1

这个版本主要修复了由于Flipper 的网络请求监听功能导致警告弹窗的崩溃问题。

此外还有如下修改:

  1. 将@react-native-community/cli的依赖升级到了4.5.1版本。
  2. Android里面com.facebook.jni.annotations.DoNotStrip将这个包内的文件不做混淆。
  3. iOS内修复了性能组件在深色模式下的问题。
  4. iOS新增属性inverted到ScrollView可以开启或者关闭点击状态栏回到顶部
  5. iOS的Model组件进行修改
    onDismiss属性原先是由原生触发的事件,但是目前发现可能会触发多次,因此改为了model的js组件unmount的时候触发onDismiss方法。
  6. 修复了iOS内VirtualizedList组件的onEndReached方法可能会触发多次的情况。
  7. 修改了一些RN库里面报警告错误的内容信息。(崩溃截图

0.62.2

这个版本主要是修复了一些用户提出的issue的问题。具体修改内容如下:

  1. Appearance模块的getColorScheme方法,如果使用谷歌浏览器debug的时候可能会失效,这个版本修改了这个问题。

  2. 修复了TextInput的mock(这个东西是在jest中使用的,jest是rn集成的一个自动化测试工具,具体的使用方法还不是很了解)

  3. 修复了一些flow报出的类型错误异常(flow是一个js的静态类型校验工具,具体用法还不是很了解)

  4. 修复了震动功能在iOS的一个兼容性的闪退问题
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N7POgRWz-1604041156871)(https://user-images.githubusercontent.com/1247834/73803879-10be6f80-4790-11ea-92d4-a008f0007681.PNG#pic_center)]

  5. Flipper在iOS中使用pod的引入方式上会存在问题,导致依赖无法安装成功,因此修改了Podfile文件。具体该问题的详细描述可以查看https://github.com/facebook/react-native/commit/e5497ca8f6e3b240948fdbeef0ac2a710f25bb56 这个地址。

  6. 修复了在iOS 13.4系统下,启用性能检测工具的时候的崩溃异常

官方原文连接

新版本简介:https://github.com/facebook/react-native/releases
版本修改记录:https://github.com/react-native-community/releases/blob/master/CHANGELOG.md

项目升级

RN官方给出了新的升级工具:https://react-native-community.github.io/upgrade-helper
这个工具可以选择源版本和目标版本,然后列出升级过程中需要改动的地方,然后开发者需要手动修改这些地方。
每修改一个地方只会,开发者可以直接在工具中勾选这个修改项,这个修改下就会自动收起,直到盖完为止。

但是会有一些特殊的地方,在手动修改的时候要结合自身项目进行修改,不能完全参照。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值