BackAndroid 和 Navigator 的示例
這是一個關於如何使用 React Native 的 BackAndroid 和 Navigator 的示例。
componentWillMount 註冊一個事件監聽器來處理後退按鈕上的水龍頭。它檢查歷史堆疊中是否有另一個檢視,如果有一個檢視,它會返回 - 否則它將保持預設行為。
有關 BackAndroid 文件和 Navigator 文件的更多資訊。
import React, { Component } from 'react'; // eslint-disable-line no-unused-vars
import {
  BackAndroid,
  Navigator,
} from 'react-native';
import SceneContainer from './Navigation/SceneContainer';
import RouteMapper from './Navigation/RouteMapper';
export default class AppContainer extends Component {
  constructor(props) {
    super(props);
    this.navigator;
  }
  componentWillMount() {
    BackAndroid.addEventListener('hardwareBackPress', () => {
      if (this.navigator && this.navigator.getCurrentRoutes().length > 1) {
        this.navigator.pop();
        return true;
      }
      return false;
    });
  }
  renderScene(route, navigator) {
    this.navigator = navigator;
    return (
      <SceneContainer
        title={route.title}
        route={route}
        navigator={navigator}
        onBack={() => {
          if (route.index > 0) {
            navigator.pop();
          }
        }}
        {...this.props} />
    );
  }
  render() {
    return (
      <Navigator
        initialRoute={<View />}
        renderScene={this.renderScene.bind(this)}
        navigationBar={
          <Navigator.NavigationBar
            style={{backgroundColor: 'gray'}}
            routeMapper={RouteMapper} />
        } />
    );
  }
};