【问题标题】:Passing Params from Stack-navigator to tab Navigator (react-navigation 5)将参数从堆栈导航器传递到选项卡导航器(反应导航 5)
【发布时间】:2020-07-29 23:13:03
【问题描述】:

我正在尝试将用户 ID 从登录屏幕传递到作为嵌套选项卡导航器一部分的主屏幕。 这是我的应用程序的结构:

 const mainStack = () =>(

             <Tab.Navigator


             tabBarOptions={{
              activeTintColor: 'tomato',
              inactiveTintColor: 'gray',
            }}
             >
                <Tab.Screen name="Home" component={Homescreen} 
                 options = {{headerStyle: {backgroundColor: 'yellow'}}}
                />
                <Tab.Screen name="Profile" component={otherStack} />
             </Tab.Navigator>

    )




export default () => (

        <NavigationContainer >
              <Stack.Navigator screenOptions={{
                  headerShown: false
                  }}>
                <Stack.Screen name='Welcome' component={WelcomeScreen} />
                <Stack.Screen name = 'Register' component = {RegisterScreen} />
                <Stack.Screen name= 'Login' component={LoginScreen} />
                <Stack.Screen name = 'mainStack' component={mainStack} />
              </Stack.Navigator>



        </NavigationContainer>

)

每当我从登录屏幕转到主页并调用 this.props.navigation.getParam('id') 时,我都会收到一条错误消息,指出它不是一个函数。经过仔细检查,我发现 this.props.navigation.state 是未定义的。可能意味着我的参数没有传递到主屏幕,即使我在导航到它时没有任何问题。

我尝试使用 NavigationActions,但收到了一个在其他任何地方都没有提到的错误。

我这样导航到主页:

this.props.navigation.navigate('Home' { id: 'myId' })

我也试过这个语法:

 navigation.navigate('Root', {
  screen: 'Settings',
  params: { user: 'jane' },
});

但我得到同样的错误

另外值得注意的是,我使用了 React.component 而不是将我的屏幕变成函数。我不确定这是否会导致任何问题,因为在 react-navigation v5 的教程中,我看到这个人使用函数而不是反应组件。

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript react-native redux react-navigation-stack react-navigation-bottom-tab


    【解决方案1】:

    试试这个:

    props.navigation.navigate('mainStack' { params: {id: 'myId'}, screen: 'Home' )
    
    

    当访问而不是使用getParam 时,使用props.route.params.id

    【讨论】:

    • 所以我多次尝试了这两种方法,但没有一起尝试。但是非常感谢!无法告诉你我在这个愚蠢的事情上被困了多久
    • @abdi 你也可以尝试解决我的问题吗?我被卡住了
    • 我很高兴尝试一下。删除链接@szskdgi
    • @abdi 谢谢,但我刚刚解决了。愚蠢的编程错误让我卡了好几天哈哈
    • 按下后退按钮后,您可以进入登录/注册页面。你是怎么处理的?
    猜你喜欢
    • 2022-10-07
    • 2020-12-02
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多