我正在使用 https://reactnavigation.org/用于在 React Native 应用程序中导航,将选项卡导航器作为主堆栈,并在其中包含两个屏幕的模式(用于登录和配置应用程序)。
我这辈子都想不出如何从第二个屏幕关闭模式 (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
。或者阻止它。
这就是我现在要使用的解决方案。我一直在寻找更好的解决方案。
关于javascript - 如何关闭其中包含多个屏幕的 React Navigation 模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49804332/