javascript - 重置主屏幕的导航堆栈(React Navigation 和 React Native)

标签 javascript react-native navigation react-navigation

我对 React Navigation 的导航有问题和 native react 。这是关于重置导航并返回主屏幕。

我在 DrawerNavigator 内部构建了一个 StackNavigator,主屏幕和其他屏幕之间的导航正常。但问题是,导航堆栈不断增长。我不确定如何从堆栈中删除屏幕。

例如,当从主屏幕进入设置屏幕,然后进入进入屏幕,最后再次进入主屏幕时,主屏幕在堆栈中有两次。使用后退按钮我不会退出应用程序,而是会再次进入输入屏幕。

当再次选择主页按钮时,重置堆栈会很好,但我不知道该怎么做。 Here有人试图帮助其他人解决类似问题,但解决方案对我不起作用。

const Stack = StackNavigator({
  Home: {
    screen: Home
  },
  Entry: {
    screen: Entry
  },
  Settings: {
    screen: Settings
  }
})

export const Drawer = DrawerNavigator({
  Home: {
    screen: Stack
  }},
  {
    contentComponent: HamburgerMenu
  }
)

这是抽屉屏幕的一个简单例子

export default class HamburgerMenu extends Component {
  render () {
    return <ScrollView>
      <Icon.Button
        name={'home'}
        borderRadius={0}
        size={25}
        onPress={() => { this.props.navigation.navigate('Home')}}>
        <Text>{I18n.t('home')}</Text>
      </Icon.Button>

      <Icon.Button
        name={'settings'}
        borderRadius={0}
        size={25}
        onPress={() => { this.props.navigation.navigate('Settings')}}>
        <Text>{I18n.t('settings')}</Text>
      </Icon.Button>

      <Icon.Button
        name={'entry'}
        borderRadius={0}
        size={25}
        onPress={() => { this.props.navigation.navigate('Entry')}}>
        <Text>{I18n.t('entry')}</Text>
      </Icon.Button>
    </ScrollView>
  }
}

我希望你能帮助我。这是导航的重要组成部分,如果有解决方案那就太好了!

最佳答案

React Navigation 5.x , 6.x

import { CommonActions } from '@react-navigation/native';

navigation.dispatch(
  CommonActions.reset({
    index: 1,
    routes: [
      { name: 'Home' },
      {
        name: 'Profile',
        params: { user: 'jane' },
      },
    ],
  })
);

可用在 Snack

关于javascript - 重置主屏幕的导航堆栈(React Navigation 和 React Native),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090884/

相关文章:

javascript - 带有 Fancybox 的 Pikachoose API Hook 在 IE9 或更低版本中不起作用

javascript - 带有 $or 条件的 Mongoose findOne 方法会引发错误

javascript - 如何终止通过 SSH 启动的 Node.js 的 NOHUP 进程

javascript - 使用 setState 设置新状态和更改旧状态之间的区别

jquery - 如何将子菜单置于父菜单下方 `<li>`

javascript - 平滑的 SVG 轴动画

react-native - Metro Bundler 在 react-native 目录中寻找 JS 文件

javascript - 作为子项添加时,以不同方式 react native 组件呈现

reactjs - 一个标签导航器中的多个屏幕

css - Twitter Bootstrap 2.0 中的中心导航栏