0

我正在导航到一个用参数包裹在 DrawerNavigator 中的 StackNavigator(其默认路由是 MaterialBottomTabNavigator)。我可以在 Drawer 自定义组件中获取参数。但在 StackNavigator 的屏幕中无法获得相同的结果。我尝试通过将默认路由更改为纯屏幕来避免 BottomTabNav,但结果仍然相同。

这是我的仪表板屏幕 - 选项卡导航器

const Dashboard = createMaterialBottomTabNavigator(
    {
        Tab1: Tab1Component,
        Tab2: Tab2Component,
        ...
    }
);

这是我从上述选项卡之一导航到的另一个屏幕

class Otherscreen extends Component { 
    ...
    render() {
        ...
        <Text>{
            this.props.navigation.getParam('userInfo', 'Not Set')
            /* FAILS!!! */
        }</Text>
        ...
    } 
    ...
}

因此,这是一个包含两者的堆栈导航器

const AppStack = createStackNavigator(
    {
        'Dashboard': {
            'screen': Dashboard,
        },
        'Otherscreen': {
            'screen': Otherscreen
        }
    }
);

我需要一个抽屉来放整件东西,所以把它全部包起来

const AppDrawerNavigator = createDrawerNavigator(
    { //Main screen
        'AppStack': AppStack
    },
    { //Drawer
        'contentComponent': Drawer
    }
);

抽屉在哪里

class Drawer extends Component { 
    ...
    render() {
        ...
        <Text>{
            this.props.navigation.getParam('userInfo', 'Not Set')
            /* WORKS!!! */
        }</Text>
        ...
    } 
    ...
}

对于身份验证和其他东西,如飞溅,我正在使用

const AppNavigator = createSwitchNavigator({
    'Splash': Splash,
    'Auth': AuthStack,
    'App': AppDrawerNavigator,
});

export default createAppContainer(AppNavigator);

现在我想做的是这个。

  • 在“Splash”,我检查最后一个用户信息。
    • 如果我得到它,我会验证会话令牌以查看它是否已过期
      • 如果没有过期,我会使用 userinfo 导航到“App”(上面的 AppDrawerNavigator 实例)
    • 如果我没有得到它,或者会话已过期,我会导航到 Auth
      • 身份验证结束后,我使用用户信息导航到“App”(上面的 AppDrawerNavigator 实例)

在任何一种情况下,我都将使用相同的 userinfo 参数来“应用”并且我可以在 Drawer component 中获取 userinfo 参数

但我没有从 AppStack 中的任何其他屏幕获取它。我什至试图通过将Otherscreen 向上移动到第一个位置使其成为默认值来避免中间的BottomTabNav,然后导航到“App”转到Otherscreen,但userinfo 参数仍然不可用。

我想我应该能够从(A)抽屉组件和(B)AppStack屏幕上的this.props.navigation获取userinfo参数,或者至少它是初始屏幕,即仪表板组件

这是一个最小的演示: https ://github.com/bhave-abhay/PassPropsIntoNestedNav/ 另外,这是错误报告 https://github.com/react-navigation/react-navigation/issues/5646

在这种情况下出了什么问题?!

4

0 回答 0