通过“ Back”键在不同堆栈之间来回移动

问题描述 投票:1回答:1

这是我的代码:

  const Stack1 = createStackNavigator(
      {
        Aone: AoneScreen,
        Atwo: AtwoScreen,
    }
    const Stack2 = createStackNavigator(
      {
        Bone:BoneScreen,
        Btwo: BtwoScreen,
    }
    const Stack3 = createStackNavigator(
      {
        Cone:ConeScreen,
        Ctwo: CtwoScreen,
    }

    const TabNavigator = createBottomTabNavigator(
    Stack1,
    Stack2,
    Stack3
    )

[当我进入“ AoneScreen”之类的堆栈时,我进入另一个堆栈,说“ CtwoScreen”,然后按“返回”按钮,而不是移回到第一个堆栈AoneScreen,它移到了顶部第二个堆栈(ConeScreen)应该!但这不是我想要的。我想要的是在按下后退按钮的情况下返回到原始堆栈(在这种情况下为“ AoneScreen”),我想知道是否有可能。

react-native react-navigation tabnavigator
1个回答
0
投票

您可以使用React Native的BackHandler在屏幕“ CtwoScreen”上实现后退按钮的自定义行为,这仅取决于其动态性。From documentation

import { BackHandler } from "react-native";

componentDidMount() {
  this.backHandler = BackHandler.addEventListener('hardwareBackPress',this.handleBackPress);
}

componentWillUnmount() {
  this.backHandler.remove()
}

handleBackPress = () => {
// add some kind of custom check if you want this behaviour only sometimes, nav params are a good way
  if (this.props.navigation.state.params.isFromAOneScreen) { 
    this.props.navigation.setParams({ isFromAOneScreen: false });
    this.props.navigation.popToTop(); // to remove COneScreen from stack, from transition
    this.props.navigation.navigate("AOneScreen");
    return true;
  }

  return false;
}

© www.soinside.com 2019 - 2024. All rights reserved.