React Native 0.62 发布公告,包含 Flipper
今天我们发布 React Native 0.62 版本,其中默认包含对 Flipper 的支持。
此版本在全球疫情期间发布。我们今天发布此版本是为了尊重数百位为此次发布做出贡献的贡献者的工作,并防止该版本落后 master 分支太远。请注意贡献者帮助解决问题的能力有所下降,并准备好在必要时延迟升级。
默认启用 Flipper
Flipper 是一款用于调试移动应用的开发者工具。它在 Android 和 iOS 社区中很受欢迎,在此版本中,我们为新的和现有的 React Native 应用默认启用了支持。
Flipper 开箱即用提供以下功能
- Metro 操作:直接从工具栏重新加载应用并触发 Dev 菜单。
- 崩溃报告器:查看来自 Android 和 iOS 设备的崩溃报告。
- React DevTools:将最新版本的 React DevTools 与您的所有其他工具一起使用。
- 网络检查器:查看设备应用发出的所有网络请求。
- Metro 和设备日志:查看、搜索和过滤来自 Metro 和设备的所有日志。
- 原生布局检查器:查看和编辑 React Native 渲染器输出的原生布局。
- 数据库和偏好设置检查器:查看和编辑设备数据库和偏好设置。
此外,由于 Flipper 是一个可扩展的平台,它提供了一个市场,可以从 NPM 中拉取插件,因此您可以发布和安装特定于您的工作流程的自定义插件。请在此处查看可用的插件 here。
有关更多信息,请查看 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>;
};
有关更多信息,请参阅 Appearance 和 useColorScheme 的文档。
将 Apple TV 迁移到 react-native-tvos
作为我们 精简核心工作 的一部分,为了使 Apple TV 与 React Native Windows 和 React Native 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。升级助手提供了从您当前版本到目标版本的更改差异,使您可以查看特定升级需要进行的更改。
即使有了这个工具,升级时也会出现问题。今天,我们通过宣布 Upgrade-Support 来引入更多专门的升级支持。Upgrade Support 是一个 GitHub 问题跟踪器,用户可以在其中提交特定于将其项目升级的问题,以获得社区的帮助。
我们一直在努力改进升级体验,我们希望这些工具能够为用户提供他们所需的边缘案例支持,而这些边缘案例我们尚未涵盖。
其他改进
- LogBox:我们正在添加新的 LogBox 错误和警告体验作为可选功能;要启用它,请将
require('react-native').unstable_enableLogBox()
添加到您的index.js
文件中。 - React DevTools v4:此更改包括升级到 最新的 React DevTools,它提供了显着的性能提升、改进的导航体验以及对 React Hooks 的完全支持。
- 无障碍功能改进:我们对无障碍功能进行了改进,包括添加 accessibilityValue、Touchables 上缺少的 props、
onSlidingComplete
无障碍事件,并将 Switch 组件的默认 role 从"button"
更改为"switch"
。
重大更改
- 移除 PropTypes:我们正在从核心组件中移除
propTypes
,以减少 React Native 核心对应用大小的影响,并倾向于在编译时而不是运行时检查的静态类型系统。 - 移除 accessibilityStates:我们 移除 了已弃用的
accessibilityStates
属性,转而使用新的accessibilityState
prop,这是一种语义更丰富的方式,供组件向无障碍服务描述有关其状态的信息。 - TextInput 更改:我们从 TextInput 中移除了
onTextInput
from TextInput,因为它不常见、不符合 W3C 标准且难以在 Fabric 中实现。我们还移除了未记录的inputView
prop 和selectionState
。
弃用
AccessibilityInfo.fetch
已经弃用,但在此版本中,我们 添加了警告。- 现在 需要 设置
useNativeDriver
,以便将来支持切换默认值。 Animated
组件的ref
现在是内部组件,并且 弃用 了getNode
。
感谢
感谢数百位帮助 0.62 版本成为可能的贡献者!
要查看所有更新,请查看 0.62 更新日志。