宣布 React Native 0.62 发布,包含 Flipper
今天,我们发布了 React Native 0.62 版本,该版本默认包含对 Flipper 的支持。
此次发布正值全球疫情期间。我们今天发布此版本是为了尊重数百位贡献者为此次发布所做的工作,并防止发布版本落后于主分支。请注意,贡献者帮助解决问题的能力有所下降,并准备好根据需要延迟升级。
默认集成 Flipper
Flipper 是一款用于调试移动应用的开发者工具。它在 Android 和 iOS 社区中很受欢迎,在此版本中,我们已为新的和现有的 React Native 应用默认启用了对它的支持。
Flipper 提供以下开箱即用的功能
- **Metro 操作**:从工具栏直接重新加载应用并触发开发者菜单。
- **崩溃报告器**:查看来自 Android 和 iOS 设备的崩溃报告。
- **React DevTools**:与所有其他工具一起使用最新版本的 React DevTools。
- **网络检查器**:查看设备应用发出的所有网络请求。
- **Metro 和设备日志**:查看、搜索和过滤来自 Metro 和设备的所有日志。
- **原生布局检查器**:查看和编辑 React Native 渲染器输出的原生布局。
- **数据库和偏好设置检查器**:查看和编辑设备数据库和偏好设置。
此外,由于 Flipper 是一个可扩展的平台,它提供了一个从 NPM 拉取插件的市场,因此您可以发布和安装特定于您工作流程的自定义插件。请查看此处提供的插件 此处。
有关更多信息,请查看 Flipper 文档。
新的暗黑模式功能
我们添加了一个新的 Appearance
模块,以提供对用户外观首选项的访问,例如他们首选的配色方案(亮色或暗色)。
const colorScheme = Appearance.getColorScheme();
if (colorScheme === 'dark') {
// Use dark color scheme
}
我们还添加了一个 hook 用于订阅用户首选项的状态更新。
import {Text, useColorScheme} from 'react-native';
const MyComponent = () => {
const colorScheme = useColorScheme();
return <Text>useColorScheme(): {colorScheme}</Text>;
};
有关更多信息,请查看 外观 和 useColorScheme 的文档。
将 Apple TV 迁移到 react-native-tvos
作为我们 精简核心工作 的一部分,以及为了使 Apple TV 与 React Native Windows 和 React Native macOS 等其他平台保持一致,我们已开始从核心代码中删除 Apple TV 特定的代码。
将来,React Native 的 Apple TV 支持将与相应的 react-native-tvos
NPM 包一起在 react-native-community/react-native-tvos 中维护。这是主存储库的完整分支,只包含支持 Apple TV 所需的更改。
react-native-tvos
的发布将基于 React Native 的公开发布。对于此 0.62 版本的 react-native
,请将 Apple TV 项目升级到使用 react-native-tvos
0.62。
更多升级支持
在发布 0.61 时,社区引入了一个新的 升级助手 工具来支持开发者升级到新版本的 React Native。升级助手提供了您当前版本到目标版本的更改差异,使您可以查看特定升级需要进行的更改。
即使有了此工具,在升级时仍然会出现问题。今天,我们通过宣布 升级支持 来引入更多专门的升级支持。升级支持是一个 GitHub 问题跟踪器,用户可以在其中提交特定于升级项目的 issue 以获得社区的帮助。
我们一直在努力改善升级体验,我们希望这些工具能够为用户提供他们在我们尚未涵盖的极端情况下所需的帮助。
其他改进
- **LogBox**:我们添加了新的 LogBox 错误和警告体验作为可选功能;要启用它,请将
require('react-native').unstable_enableLogBox()
添加到您的index.js
文件中。 - **React DevTools v4**:此更改包括升级到 最新 React DevTools,它提供了显著的性能提升、改进的导航体验以及对 React Hooks 的完全支持。
- **可访问性改进**:我们改进了可访问性,包括添加 accessibilityValue、可触摸元素 上缺少的 props、
onSlidingComplete
可访问性事件,以及将 Switch 组件的默认角色从"button"
更改为"switch"
。
重大更改
- **移除 PropTypes**:我们正在从核心组件中移除
propTypes
,以减少 React Native 核心对应用大小的影响,并倾向于在编译时而不是运行时进行检查的静态类型系统。 - **移除 accessibilityStates**:我们已 移除 已弃用的
accessibilityStates
属性,转而使用新的accessibilityState
属性,这是一种更具语义意义的方式,组件可以通过它向可访问性服务描述有关其状态的信息。 - **TextInput 更改**:我们已从
TextInput
中移除onTextInput
移除,因为它不常见、不符合 W3C 标准,并且难以在 Fabric 中实现。我们还移除了未公开的inputView
属性和selectionState
。
弃用
AccessibilityInfo.fetch
之前已弃用,但在此版本中,我们 添加了一个警告。- 现在需要设置
useNativeDriver
以 支持将来切换默认值。 Animated
组件的ref
现在是指向内部组件,并且已弃用getNode
。
致谢
感谢数百位贡献者帮助实现了 0.62 版本!
要查看所有更新,请查看0.62 版本更新日志。