在 React Native 应用程序中使用 react-navigation 通过单个按下事件返回两个屏幕

Abh*_*mar 8 react-native react-navigation

我正在使用https://reactnavigation.org 中的reactnavigation 组件,并使用下面的代码返回一屏

<Button
          onPress={() => goBack()}
          title="Go back from this HomeScreen"
        />
Run Code Online (Sandbox Code Playgroud)

我怎样才能在单按操作时返回 2 个屏幕

我正在使用此代码来初始化导航器

const RouteConfigs = {
    Login: {screen:Login},
    Home: {screen:Home},
    Chat: {screen:Chat},
    Facebook: {screen:Facebook},
    Facebookgallery: {screen:Facebookgallery}    
}

const StackNavigatorConfig = {
    headerMode: 'none',
}

export default StackNavigator(RouteConfigs, StackNavigatorConfig)
Run Code Online (Sandbox Code Playgroud)

我使用以下代码从家导航到 Facebook:

() => this.props.navigation.navigate('Facebook', {user:this.state.user})
Run Code Online (Sandbox Code Playgroud)

并使用以下代码从 Facebook 到 Facebookgallery:

onPress={ () => this.props.navigation.navigate('Facebookgallery', {user:this.state.user}) }
Run Code Online (Sandbox Code Playgroud)

现在我想用一些参数直接从 Facebookgallery 回到 Home

Vin*_*ent 24

我知道这是一个较旧的问题,但我使用的是:

navigation.pop(n);
Run Code Online (Sandbox Code Playgroud)

将您带到堆栈中的上一个屏幕。如果您提供一个数字 n,它将指定在堆栈中带您返回多少个屏幕。 https://reactnavigation.org/docs/en/navigation-prop.html


byc*_*ung 11

React Navigation 已更新为不pop直接使用函数,而是将dispatch函数与StackActions.

navigation.dispatch(StackActions.pop(2));

  • 这不是一个特殊的答案,只是用 Khadam Ikhwanus 的答案更新,如果你看到这个线程的所有答案,你就知道了;)因为 React Navigation 最近更新为不直接使用“pop”函数,而是使用“dispatch”函数堆栈操作。 (3认同)

Kha*_*nus 6

您可以使用navigation.pop(screenCount) screenCount 作为整数

navigation.pop(2) 
Run Code Online (Sandbox Code Playgroud)

这里是供参考

https://reactnavigation.org/docs/stack-actions#pop


Ski*_*uva 0

听起来您正在寻找类似 #reset 的东西(https://reactnavigation.org/docs/navigators/navigation-actions#Reset)。

我没有使用过这个库,但您可能正在尝试返回导航堆栈的根屏幕。我用于导航的其他库有某种popToRoot或类似的东西。