React Native 0.62 发布,默认支持 Flipper
作者 | Rick Hanlon
来源 | Facebook React Native Blog
React Native 发布了 0.62 版本,新境了一些新特性,其中默认包含对 Flipper 的支持,这里我们一起来看看。
默认支持 Flipper
Flipper是用于调试移动应用程序的工具。它在Android和iOS社区中很流行,并且在此版本中,我们默认启用了对新的和现有的React Native应用程序的支持。
Flipper 提供以下功能:
• Metro Actions:重新加载应用程序,并从工具栏直接触发 Dev Menu。
• Crash Repoter:查看来自Android和iOS设备的崩溃报告。
• React DevTools:与所有其他工具一起使用最新版本的 React DevTools。
• Network Inspector:查看设备应用程序发出的所有网络请求。
• Metro and Device Logs:查看、搜索和过滤来自Metro和设备的所有日志。
• Native Layout Inspector:查看和编辑React Native渲染器输出的 native 布局。
• Database and Preference Inspectors:查看和编辑设备数据库和首选项。
此外,由于Flipper是一个可扩展的平台,因此它提供了一个从NPM中提取插件的功能,因此您可以发布和安装特定于您的工作流程的自定义插件。
新的黑暗模式功能
我们添加了一个新的外观模块,以提供对用户外观偏好的访问,例如用户的首选配色方案(浅色或深色)。
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>;
};
将 Apple TV 移至 react-native-tvos
作为核心工作的一部分,为了使 Apple TV 与 React Native Windows 和 React Native macOS 等其他平台保持一致,我们已开始从核心中删除 Apple TV 特定的代码。
展望未来,Apple TV 对 React Native 的支持将在 react-native-communit/react-native-tvos 和相应的react-native-tvos NPM 软件包中维护。这是从主库中 fork 出来的,仅包含支持 Apple TV 所需的更改。
react-native-tvos 的发布将基于React Native的 release 版本。对于 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上缺失的属性和onSlidingComplete可访问性事件,以及将 Switch 组件的默认角色从“button”更改为“switch”。
重大变化
• 移除 PropTypes:我们正在从核心组件中删除propTypes,以减少React Native核心对应用程序大小的影响,并支持在编译时而不是在运行时检查的静态类型系统。
• 删除accessibilityStates:我们删除了已弃用的accessibilityStates属性,以支持新的accessibilityState属性,这是组件在语义上更加丰富的方式,用于描述有关可访问性服务的状态信息。
• TextInput的更改:我们将onTextInput从TextInput中删除,因为它不常见,不符合W3C,并且难以在Fabric中实现。我们还删除了未记录的inputView属性和selectionState。
弃用
• AccessibilityInfo.fetch 已被弃用,但在此版本中,我们添加了警告。
• 现在需要设置useNativeDriver以支持将来切换默认设置。
• Animated组件的引用现在是内部组件,并且不赞成使用getNode。
要了解所有的更新,可以查阅 0.62 changelog