跳至主要內容

0.36:Headless JS、鍵盤 API 及更多

·3 分鐘閱讀時間
Héctor Ramos
Héctor Ramos
前 Facebook 開發人員倡導者

今天我們發布了 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,可以更輕鬆地使用螢幕鍵盤。您現在可以監聽原生鍵盤事件並對其做出反應。例如,若要關閉作用中的鍵盤,只需呼叫 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 的 Spring 動畫,並產生 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