跳到主要内容

宣布发布支持 Flipper 的 React Native 0.62 版本

· 阅读需 5 分钟
Rick Hanlon
Facebook React Native 核心团队成员

今天我们发布了 React Native 版本 0.62,默认支持 Flipper。

此次发布正值全球疫情期间。今天发布此版本是为了尊重数百位贡献者的努力,他们使得此次发布成为可能,同时避免版本跟主分支落后太多。请大家理解贡献者在处理问题方面能力受限,如有必要,准备延迟升级。

默认支持 Flipper

Flipper 是一个用于调试移动端应用的开发者工具。它在 Android 和 iOS 社区中非常流行,在本次发布中,我们为新建和现有的 React Native 应用默认开启了对 Flipper 的支持。

React Native 的 Flipper 截图

Flipper 开箱即用的功能包括:

  • Metro 操作:直接从工具栏重新加载应用并触发开发者菜单。
  • 崩溃报告器:查看来自 Android 和 iOS 设备的崩溃报告。
  • React DevTools:使用最新版 React DevTools,与其他工具并列使用。
  • 网络检查器:查看设备应用发出的所有网络请求。
  • Metro 和设备日志:查看、搜索和筛选 Metro 和设备的所有日志。
  • 原生布局检查器:查看和编辑 React Native 渲染器输出的原生布局。
  • 数据库和偏好设置检查器:查看和编辑设备数据库与偏好设置。

此外,Flipper 作为一个可扩展的平台,提供了一个市场,从 NPM 拉取插件,你可以发布或安装针对自己工作流定制的插件。可用插件请见 这里

更多信息请查看 Flipper 文档

新增暗黑模式功能

我们新增了一个 Appearance 模块,用于访问用户的外观偏好设置,比如他们偏好的配色方案(浅色或暗色)。

const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// 使用暗色配色方案
}

我们还新增了一个钩子,用于订阅用户偏好的状态更新:

import {Text, useColorScheme} from 'react-native';

const MyComponent = () => {
const colorScheme = useColorScheme();
return <Text>useColorScheme(): {colorScheme}</Text>;
};

更多信息请查看文档的 AppearanceuseColorScheme

Apple TV 迁移至 react-native-tvos

作为我们 Lean Core 计划 的一部分,同时为了使 Apple TV 与 React Native Windows、React Native macOS 等其他平台保持一致,我们开始从核心库中移除 Apple TV 相关代码。

今后,React Native 对 Apple TV 的支持将维护在 react-native-community/react-native-tvos 项目中,及对应的 react-native-tvos NPM 包。该仓库是 React Native 主仓库的完整分叉,仅包含支持 Apple TV 所需的变更。

react-native-tvos 的发布将基于公开发布的 React Native 版本。针对此次 0.62 版本,请升级 Apple TV 项目以使用 react-native-tvos 0.62。

更多升级支持

0.61 版本发布时,社区推出了新的 升级辅助工具,帮助开发者升级 React Native 新版本。升级助手会显示你当前版本到目标版本的差异,便于你了解并应用所需的改动。

即便有此工具,升级时仍会遇到问题。今天我们推出了更多专门的升级支持——Upgrade-Support。Upgrade Support 是专门针对升级项目问题的 GitHub 问题跟踪区,用户可以在这里提交升级相关问题并获得社区帮助。

我们一直致力于改善升级体验,希望这些工具能在我们尚未覆盖的边缘案例中给予用户支持。

其他改进

  • LogBox:我们新增了可选的 LogBox 错误和警告体验;要启用它,请在 index.js 文件中加入 require('react-native').unstable_enableLogBox()
  • React DevTools v4:升级至 最新的 React DevTools,带来显著的性能提升、更好的导航体验及对 React Hooks 的完整支持。
  • 无障碍功能改进:我们改进了无障碍功能,包括新增 accessibilityValue、为 Touchables 添加缺失的属性、onSlidingComplete 无障碍事件,并将 Switch 组件的默认角色从 "button" 改为 "switch"

破坏性变更

  • 移除 PropTypes:为了减少 React Native 核心库对应用体积的影响,并鼓励使用编译时检查的静态类型系统,我们移除了核心组件中的 propTypes
  • 移除 accessibilityStates:我们移除了已废弃的 accessibilityStates 属性,改用新的 accessibilityState 属性,它为组件向辅助功能服务提供状态信息提供了更丰富的语义描述。
  • TextInput 改动:移除了不常用、非 W3C 兼容且难以在 Fabric 中实现的 onTextInput 事件支持。同时也删除了未文档化的 inputView 属性和 selectionState

弃用通知

  • AccessibilityInfo.fetch 已被弃用,本次发布新增了警告提示
  • 设置 useNativeDriver 现在是必需的,以支持未来切换默认值的计划。
  • Animated 组件的 ref 现在指向内部组件,并且弃用getNode 方法。

致谢

感谢数百位贡献者的努力,让 0.62 版本成为可能!

欲了解全部更新内容,请查看 0.62 更新日志