跳至主内容

React Native 0.62 发布:默认集成 Flipper

· 1 分钟阅读
Rick Hanlon
Facebook React Native 核心成员
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

今天我们正式发布 React Native 0.62 版本,该版本默认集成了 Flipper 支持。

本次发布正值全球疫情期间。我们选择此刻发布是为了尊重数百位贡献者为本版本付出的努力,并避免版本与主分支差距过大。请注意当前贡献者处理问题的能力有所下降,如有必要请酌情延迟升级计划。

默认集成 Flipper

Flipper 是一款用于调试移动应用的开发者工具,在 Android 和 iOS 社区广受欢迎。本次更新中,我们为新建和现有 React Native 应用默认启用了该工具支持。

React Native 的 Flipper 界面截图

Flipper 默认提供以下功能:

  • Metro 操作:通过工具栏直接重载应用并触发开发者菜单

  • 崩溃报告:查看来自 Android 和 iOS 设备的崩溃日志

  • React 开发者工具:在统一界面中使用最新版 React DevTools

  • 网络检查器:查看设备应用发起的全部网络请求

  • Metro 与设备日志:查看、搜索并筛选来自 Metro 和设备的全部日志

  • 原生布局检查器:查看并编辑 React Native 渲染器输出的原生布局

  • 数据库与偏好设置检查器:查看并编辑设备数据库和偏好设置

此外,Flipper 作为可扩展平台,提供了从 NPM 获取插件的市场机制,您可发布或安装符合特定工作流程的自定义插件。查看可用插件列表

更多信息请参阅 Flipper 官方文档

全新深色模式功能

我们新增了 Appearance 模块,用于获取用户的外观偏好设置(如首选配色方案为浅色或深色模式)。

const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// Use dark color scheme
}

同时新增了监听用户偏好设置变更的钩子函数:

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

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

详见 AppearanceuseColorScheme 文档。

Apple TV 迁移至 react-native-tvos

作为精简核心计划的一部分,同时为统一 Apple TV 与 React Native Windows/macOS 等平台的支持方式,我们已开始从核心代码库移除 Apple TV 专属代码。

未来 React Native 对 Apple TV 的支持将转由 react-native-community/react-native-tvos 仓库维护,并同步提供 react-native-tvos NPM 包。这是主代码库的完整分支,仅包含支持 Apple TV 的必要修改。

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

增强升级支持

当 0.61 版本发布时,社区推出了全新的升级助手工具,帮助开发者升级 React Native 版本。该工具可展示从当前版本到目标版本的差异对比,明确升级所需的具体修改。

即便使用此工具,升级过程中仍可能遇到问题。今天我们宣布推出升级支持中心,提供更专注的升级支持。该 GitHub issue 跟踪系统专用于处理项目升级相关问题,开发者可在此获取社区帮助。

我们始终致力于优化升级体验,希望这些工具能为尚未覆盖的特殊场景提供必要支持。

其他改进

  • LogBox:新增的错误与警告体验现作为可选功能提供,需在 index.js 中添加 require('react-native').unstable_enableLogBox() 启用

  • React DevTools v4:升级至最新版 React DevTools,显著提升性能,优化导航体验,并完整支持 React Hooks

  • 无障碍改进:包括新增 accessibilityValueTouchables 缺失属性、onSlidingComplete 无障碍事件支持,并将 Switch 组件的默认角色由 "button" 改为 "switch"

重大变更

  • 移除 PropTypes:为减少 React Native 核心对应用体积的影响,并推荐使用编译时检查的静态类型系统,我们移除了核心组件中的 propTypes

  • 移除 accessibilityStates移除已废弃的 accessibilityStates 属性,改用语义更丰富的 accessibilityState 属性向无障碍服务描述组件状态信息

  • TextInput 变更:因使用率低、不符合 W3C 标准且在 Fabric 中实现困难,移除了 TextInput 的 onTextInput。同时移除了未文档化的 inputView 属性和 selectionState

弃用项

  • AccessibilityInfo.fetch 此前已弃用,本次更新添加了警告提示

  • 现在必须显式设置 useNativeDriver 以支持未来默认值切换,详见

  • Animated 组件的 ref 现指向内部组件,已弃用 getNode 方法

致谢

衷心感谢数百位贡献者让 0.62 版本成为可能!

要查看所有更新内容,请查阅 0.62 更新日志