【问题标题】:StackNavigation how to know from which screen I navigated from?StackNavigation 如何知道我从哪个屏幕导航?
【发布时间】:2017-10-26 19:03:29
【问题描述】:

我目前在我的 react native 应用中使用 StackNavigator。

我有两个屏幕,它们都将导航到同一屏幕LoginScreen。但是,根据我来自哪个屏幕,我想转到不同的屏幕。

例如:

ScreenA -> LoginScreen -> ScreenC

ScreenB -> LoginScreen -> ScreenD

因此,在 LoginScreen 中,我需要知道我来自哪个屏幕,以便知道是转到屏幕 C 还是 D。

但是 this.props.navigation 上的 goBack 函数只是一个带你回到最后一个屏幕的函数。它不会为您提供屏幕的 ID 或确定您来自何处的某种方式。

有没有人可以解决这个问题?

谢谢

【问题讨论】:

    标签: ios react-native navigation stack-navigator


    【解决方案1】:

    登录屏幕需要一个标志,称之为IsScreenA,这个变量将来自屏幕A和B,分别为truefalse。然后,在登录屏幕中,根据该标志进行导航:

    if(this.props.IsScreenA)
       this.props.navigation.navigate("ScreenC")
    else
       this.props.navigation.navigate("ScreenD")
    

    现在返回,使用my answer here 以及上述逻辑。您将调用 LoginScreen,然后根据任何屏幕,您传递不同的 goBack()

    编辑:

    要传递一个参数,你可以这样做:

    从屏幕 A:

    this.props.navigation.navigate("LoginScreen", {IsScreenA: true});
    

    从屏幕 B:

    this.props.navigation.navigate("LoginScreen", {IsScreenA: false});
    

    【讨论】:

    • 完美!我以为会是这样的。导航时如何添加标志?类似于 this.props.navigation.navigate('LoginScreen', true); ?
    • 哈利勒先生,你是老板!干杯!
    • 很高兴我能帮上忙!祝你好运:)
    猜你喜欢
    • 2021-03-22
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多