首页 > 解决方案 > 回到Android中处理硬件后退按钮的上一条路线

问题描述

我正在使用此代码(此处)来处理 Android 中的硬件后退按钮。

我已经嵌套了 Route 并且在此代码中,当您单击后退按钮时,转到initialRoute.

我的路线是这样的: Home => PoolList => PoolDetails => Cart

CartRoute 中,通过单击 Back 按钮,返回Home。我想支持如:

Home <= PoolList <= PoolDetails <= Cart

如何更改此代码?

import React from "react";
import { BackHandler } from "react-native";
import { addNavigationHelpers, NavigationActions, DrawerNavigator } from "react-navigation";

const AppNavigation = DrawerNavigator(
  {
    Home: { screen: HomeScreen },
    PoolList: { screen: PoolListScreen },
    PoolDetails: { screen: PoolDetailsScreen },
    Cart: { screen: CartScreen },
  },
  {
     contentComponent: props => <SideBar {...props} />,
     drawerPosition: 'right'
 }
);

class ReduxNavigation extends React.Component {
  componentDidMount() {
    BackHandler.addEventListener("hardwareBackPress", this.onBackPress);
  }
  componentWillUnmount() {
    BackHandler.removeEventListener("hardwareBackPress", this.onBackPress);
  }
  onBackPress = () => {
    const { dispatch, nav } = this.props;
    if (nav.index === 0) {
      return false;
    }
    dispatch(NavigationActions.back());
    return true;
  };

  render() {
    const { dispatch, nav } = this.props;
    const navigation = addNavigationHelpers({
      dispatch,
      state: nav,
      addListener,
    });

    return <AppNavigation navigation={navigation} />;
  }
}

标签: reactjsreact-nativereact-navigation

解决方案


推荐阅读