0.36:Headless JS、键盘 API 等新特性
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们正式发布 React Native 0.36。下面让我们详细了解本次更新的主要内容。
Headless JS
Headless JS 让应用在后台运行时仍能执行 JavaScript 任务,例如同步最新数据、处理推送通知或播放音乐等。目前该功能仅支持 Android 平台。
首先,在独立文件中定义你的异步任务(例如 SomeTaskName.js):
module.exports = async taskData => {
// Perform your task here.
};
接着,在 AppRegistry 中注册你的任务:
AppRegistry.registerHeadlessTask('SomeTaskName', () =>
require('SomeTaskName'),
);
使用 Headless JS 需要编写少量原生 Java 代码来实现按需启动服务。请查阅我们全新的 Headless JS 文档 获取更多信息!
键盘 API
全新的 Keyboard API 让屏幕键盘操作更加便捷。现在你可以监听原生键盘事件并作出响应。例如,要关闭当前键盘只需调用 Keyboard.dismiss():
import {Keyboard} from 'react-native';
// Hide that keyboard!
Keyboard.dismiss();
动画除法运算
React Native 原本已支持通过加法、乘法和取模运算组合两个动画值。在 0.36 版本中,现在可以通过除法运算组合动画值。当某个动画值需要基于另一个动画值的倒数进行计算时(例如缩放反转:2x → 0.5x),这就非常有用:
const a = Animated.Value(1);
const b = Animated.divide(1, a);
Animated.spring(a, {
toValue: 2,
}).start();
此时 b 将跟随 a 的弹性动画变化,并输出 1 / a 的计算结果。
基础用法示例如下:
<Animated.View style={{transform: [{scale: a}]}}>
<Animated.Image style={{transform: [{scale: b}]}} />
<Animated.View>
在此示例中,内部图片完全不会产生拉伸,因为父级缩放效果被完全抵消。如需了解更多,请查阅 动画指南。
深色状态栏
StatusBar 新增了 barStyle 属性值:dark-content。现在你可以在 Android 和 iOS 平台统一使用 barStyle 属性,具体效果如下:
-
default:使用平台默认样式(iOS 浅色,Android 深色) -
light-content:浅色状态栏配黑色文字与图标 -
dark-content:深色状态栏配白色文字与图标
其他更新
以上仅是 0.36 版本的部分更新内容。请查看 GitHub 发布说明 了解完整的新特性、问题修复和重大变更清单。
你可以通过在终端运行以下命令升级到 0.36 版本:
$ npm install --save react-native@0.36
$ react-native upgrade