我在一个React Native应用程序中使用https://reactnavigation.org/进行导航,其中一个选项卡导航器作为主堆栈,一个带有两个屏幕的模式(用于登录和配置应用程序)。
我不能为我的生活弄清楚如何从第二个屏幕(SelectItems
)关闭模态。从模态的第一个屏幕我可以用navigation.goBack()
关闭它。
两个模态屏幕都需要一个关闭按钮。有没有办法只返回用户所在的任何标签?
在此先感谢您的帮助。
const Tabs = TabNavigator(
{
Search: { screen: Search },
Settings: { screen: Settings }
}
);
// modal with two screens
const Setup = StackNavigator(
{
Login: {
screen: Login
},
SelectItems: {
screen: SelectItems
}
},
{
initialRouteName: 'Login'
}
);
const RootStack = StackNavigator(
{
Main: {
screen: Tabs
},
Setup: {
screen: Setup
}
},
{
mode: 'modal',
headerMode: 'none'
}
);
我找到了解决方案,但并不完美。
您可以使用popToTop返回到堆栈的第一个场景,而goBack将关闭模态。
navigation.popToTop();
navigation.goBack(null);
问题是它会再次挂载堆栈的第一个场景,所以一定要在你的willMount或didMount中使用setState
。或者防止它。
这就是我现在要解决的问题。我一直在寻找更好的解决方案。
我试图自己解决这个问题,我最终使用的解决方案是使用navigation.navigate()
例子this.props.navigation.navigate('name of screen you want to go');
希望这可以帮助!