javascript - 如何关闭其中包含多个屏幕的 React Navigation 模态

标签 javascript reactjs react-native react-navigation

我正在使用 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/

相关文章:

react-native - ListView.DataSource中rowHasChanged的确切输入是什么

react-native - react native : Unexpected view type nested under text node

javascript - 如何在字段上拖放多个元素

javascript - 如何使用 JavaScript、Jquery 等隐藏 Django 表单字段

javascript - Ckeditor5 - "widget toolbar no items"{toolbarId : 'mediaEmbed' }

react-native - React Native 的增强现实(相机上的兴趣点)

javascript - 如何将 div 元素定位到背景上的确切点

javascript - 将公式从 JavaScript 添加到 CSV 以导入到 Google 表格会导致多列

reactjs - React.Children.toArray 无法在使用 typescript 的 child 身上找到 Prop

reactjs - 如何调度 SyntheticEvent 事件?