我具有以下导航结构
const HomeTabNavigator = () => (
<Tab.Navigator>
<Tab.Screen name="HomeStackNavigator"/>
<Tab.Screen name="SearchStackNavigator"/>
<Tab.Screen name="AccountStackNavigator" />
</Tab.Navigator>
);
const HomeStackNavigator = () => {
return (
<HomeStack.Navigator headerMode="none">
<HomeStack.Screen name="HomeScreen" component={HomeScreen}/>
</HomeStack.Navigator>
)
}
const SearchStackNavigator = () => {
return (
<SearchStack.Navigator headerMode="none">
<SearchStack.Screen name="SearchScreen" component={SearchScreen}/>
<SearchStack.Screen name="SearchDetailScreen" component={SearchDetailScreen}/>
</SearchStack.Navigator>
);
}
const AccountStackNavigator = () => {
return(
<AccountStack.Navigator headerMode="none">
<AccountStack.Screen name="AccountScreen" component={AccountScreen}/>
<AppointmentStack.Screen name="ItemListScreen" component={ItemListScreen}/>
<AppointmentStack.Screen name="ItemDetailScreen" component={ItemDetailScreen}/>
</AccountStack.Navigator>
);
}
我想从任何屏幕导航到ItemDetailScreen
中的AccountStackNavigator
,比方说,我想从HomeScreen
导航。但是,当我单击ItemDetailScreen
的后退按钮时,它必须将我重定向到ItemListScreen
,并且此屏幕上的后退按钮必须将我重定向到AccountScreen
。
我正在使用以下屏幕进行重定向。
this.props.navigation.navigate('AccountStackNavigator', {
screen: 'AppointmentListScreen',
params: {
screen: 'AccountScreen'
}
});
这会将我从HomeScreen
重定向到AppointmentListScreen
,当我单击此处时,它会将我重定向到AccountScreen
,这是完美的。现在是我使用此代码时的问题。
this.props.navigation.navigate('AccountStackNavigator', {
screen: 'AppointmentDetailScreen',
params: {
screen: 'AppointmentListScreen',
params: {
screen: 'AccountScreen'
}
}
});
它完美地将我重定向到AppointmentDetailScreen
,但是,当我单击此处的“后退”按钮时,它会将我重定向到HomeScreen
,而我希望通过以下流程将其重定向。
AppointmentDetailScreen > AppointmentListScreen > AccountScreen
我已经尝试了很多方法来实现这一目标,但是似乎对我没有任何帮助,任何人都可以向正确的方向提供帮助。
谢谢。
答案 0 :(得分:0)
使用self.child
来实现这一目标是令人沮丧的,主要是因为它在切换屏幕之间缺乏动画效果,给用户带来了怪异的体验,因此我选择了@react-navigation/bottom-tabs
并运行良好。