皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

React Native 0.63 发布,告警系统、颜色与交互能力改进

React Native 0.63 已经发布了,此版本主要亮点包括:

  • 默认启用 LogBox
  • <Pressable /> 组件
  • 新增使用系统定义颜色的 API

默认启用 LogBox

社区一直以来反馈错误和警告很难在 React Native 中进行调试,因此开发团队研究了 React Native 中的整个错误、警告和日志系统,从头开始对其进行了重新设计,现在使用一个新系统 LogBox 替换 redbox、yellowbox 与日志记录。上一个版本中已经引入该 LogBox,此版本开始,它默认开启,并在使用 yellowbox 等一些不建议使用的模块或方法时发出警告,0.64 版本中将删除相关 API。

LogBox 目标是:

  • 简洁:日志应提供调试问题所需的最少信息量。
  • 格式化:日志应该格式化,可以快速找到所需的信息。
  • 可操作性:日志应可操作,可以解决问题并继续进行。

为了实现这些目标,LogBox 设计时包括:

  • 日志通知:重新设计了警告通知并增加了对错误的支持,以便所有 console.warn 和 console.log 消息都显示为通知,而不是覆盖应用程序。
  • 代码帧:每个错误和警告都包括一个代码帧,可在应用程序内部显示日志的源代码,可以快速识别问题的来源。
  • 组件栈:提供了一个一致的、不会使日志消息混乱的组件栈帧信息,只显示前三个。
  • 折叠组件栈帧:默认情况下折叠与应用程序代码无关的调用堆栈帧,可以在应用程序中快速查看问题,而不必通过 React Native 内部筛选。
  • 语法错误格式:改进了语法错误的格式,并通过语法高亮添加了代码帧,可以查看错误的根源进行修复,并继续进行编码。

pressable 组件

React Native 现在支持 Web、桌面和电视等平台,但是缺少对其它输入方式的支持。为了解决在所有平台上支持高质量的交互体验,此版本提供了一个新核心组件Pressable。该组件可用于检测各种类型的交互,旨在提供对交互当前状态的直接访问,而不必在父组件中手动维护状态。同时它还旨在使平台能够扩展其功能,例如悬停、模糊与聚焦等。

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

<Pressable
  onPress={() => {
    console.log('pressed');
  }}
  style={({ pressed }) => ({
    backgroundColor: pressed ? 'lightskyblue' : 'white'
  })}>
  <Text style={styles.text}>Press Me!</Text>
</Pressable>;

新增使用系统定义颜色的 API

每个平台都有系统定义的颜色,尽管可以通过AppearanceAPI 或 AccessibilityInfo检测并设置其中的某些样式,但是这样的操作不仅开发成本高昂,而且还局限。

React Native 现在提供了一个开箱即用的解决方案来使用这些系统颜色。PlatformColor()是一个新的 API,可以像 React Native 中的其它任何颜色一样使用。

例如,在 iOS 上,系统提供一种颜色labelColor,可以在 React Native 中这样使用 PlatformColor

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

<Text style={{ color: PlatformColor('labelColor') }}>
  This is a label
</Text>;

另一方面,Android 提供像 colorButtonNormal 这样的颜色,可以在 React Native 中这样使用 PlatformColor

import { View, Text, PlatformColor } from 'react-native';

<View
  style={{
    backgroundColor: PlatformColor('?attr/colorButtonNormal')
  }}>
  <Text>This is colored like a button!</Text>
</View>;

同时DynamicColorIOS是仅限于 iOS 的 API,可以定义在浅色和深色模式下使用的颜色。与PlatformColor相似,可以在任何可以使用颜色的地方使用:

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

const customDynamicTextColor = DynamicColorIOS({
  dark: 'lightskyblue',
  light: 'midnightblue'
});

<Text style={{ color: customDynamicTextColor }}>
  This color changes automatically based on the system theme!
</Text>;

此外 0.63 版本还不再支持 iOS 9 与 Node.js 8,完整更新内容可以查看:

转自 https://www.oschina.net/news/117038/react-native-0-63-released

分享到:更多 ()