这是我的代码:
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的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;
}