按TabBar路线后重置堆栈

问题描述 投票:0回答:2

我目前坚持我的项目,我有很多嵌套的导航器,我无法弄清楚如何在导航之前重置其中一个。

这是我的导航器结构:(屏幕X是相同的)

  • MainNavigator TabBarNavigator StackNavigator A 屏幕A - >导航到屏幕X. 屏幕B. StackNavigator B 屏幕C - >导航到屏幕X. 屏幕D. StackNavigator C 屏幕E - >导航到屏幕X. 屏幕F. StackNavigator D 其他组件

因此,当我从屏幕A导航到屏幕X时,我仍然可以导航到其他导航器(B,C,D),因为tabBar仍然存在并且它很好。但是,如果我在导航器A中打开屏幕X,然后导航到导航器B的屏幕,当我回到导航器时,AI想要登陆屏幕A而不是屏幕X,就像现在一样(屏幕X仍然是在导航器A的堆栈之上)。

为了恢复,我的导航实际上做了: - 导航器A - >屏幕A - >屏幕X - >导航器B - >屏幕B - >返回导航器A但是登陆屏幕X

我希望这样做: - 导航器A - >屏幕A - >屏幕X - >导航器B - >屏幕B - >返回导航器A并登陆屏幕A

我试图在我的屏幕X导航选项中设置它,但它只适用于导航器A:

tabBarOnPress: () => {
    navigation.goBack(navigation.state.key)
  }, 

任何帮助将不胜感激,因为我已经坚持了一段时间了。

反应:16.0.0

React Native:https://github.com/expo/react-native/archive/sdk-23.0.0.tar.gz

反应导航:^ 1.0.0-beta.19

目前正在iOS模拟器上工作

react-native react-navigation
2个回答
0
投票

使用redux集成,您可以使用resetNavigationActions方法:

https://reactnavigation.org/docs/navigators/navigation-actions

reset方法示例中,您将找到:

import { NavigationActions } from 'react-navigation'

const resetAction = NavigationActions.reset({
  index: 0,
  actions: [
    NavigationActions.navigate({ routeName: 'Profile'})
  ]
})

this.props.navigation.dispatch(resetAction)

0
投票

在反应导航中,tab的嵌套有点复杂,我也遇到了类似的问题

NavigationActions.reset({
    index: 0,
    key: null,
    actions: [
        NavigationActions.navigate({routeName: 'routeNameToNavigate'})
    ]
});

key值解决了我的问题并从嵌套导航我root。希望这能解决你的问题。这是一个问题

https://github.com/react-community/react-navigation/issues/1949

© www.soinside.com 2019 - 2024. All rights reserved.