首页 文章

如何重置嵌套在DrawerNavigatior中的StackNavigator的状态?

提问于
浏览
7

我正在构建一个应用程序,其导航基于react-navigation库中的DrawerNavigator .

这个导航器有3个标签:

  • 2个常规标签

  • 1 StackNavigator名为"Search"

StackNavigator包含一个允许用户搜索项目的屏幕,以及一个用户可以看到搜索结果的第二个屏幕 .

我不希望搜索结果页面成为DrawerNavigator的选项卡,这就是我实现此结构的原因 .

问题是:如果用户已经执行了搜索,当他点击“搜索”选项卡时,他不会返回搜索屏幕而是返回搜索结果屏幕 . 我希望用户回到搜索屏幕 .

我怎样才能做到这一点?

2 回答

  • 2

    您可以使用navigationActions导航调度来实现此目的

    import { NavigationActions } from 'react-navigation';
    
    const resetAction = NavigationActions.reset({
      index: 0,
      actions: [
        NavigationActions.navigate({
          routeName: 'DrawerScreen',
          params: {},
          action: NavigationActions.navigate({ routeName: 'SearchScreen' }),
        }),
      ],
    })
    navigation.dispatch(resetAction)
    
  • 1
    import { NavigationActions } from 'react-navigation';
    
    const resetAction = NavigationActions.reset({
      index: 0,
      actions: [
          NavigationActions.navigate({ routeName: 'SearchScreen'})
      ]
    })
    

    在您的按钮或任何带有事件的元素中添加以下内容:this.props.navigation.dispatch(resetAction)

    <Button
        onPress= {
            () => this.props.navigation.dispatch(resetAction)
        }
        title='Back to Search'
    />
    

相关问题