Передача параметров из стекового навигатора на вкладку навигатор (реагировать-навигация 5) - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь передать идентификатор пользователя с экрана входа в систему на домашний экран, который является частью навигатора с вложенными вкладками. Вот как структурировано мое приложение:

 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>

)

Всякий раз, когда я go с экрана входа в систему Домой и вызываю this.props.navigation.getParam ('id'), я получаю сообщение об ошибке, говорящее, что оно не функция. После более тщательного изучения я вижу, что this.props.navigation.state не определено. Возможно, это означает, что мои параметры не передаются на главный экран, хотя у меня нет проблем с переходом на него.

Я пытался использовать NavigationActions, но получаю ошибку, которую больше нигде не упоминаю.

Я перехожу к Home, как это:

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

Я также попробовал этот синтаксис:

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

, но я получаю ту же ошибку

It Также стоит отметить, что я использовал React.component, а не превращал свои экраны в функции. Я не уверен, вызывает ли это какие-либо проблемы, потому что в руководстве по реакции-навигации v5 я видел, как парень использует функции вместо компонентов реакции.

любая помощь будет очень признательна !!

1 Ответ

1 голос
/ 16 апреля 2020

Попробуйте:

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

И при доступе вместо getParam используйте props.route.params.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...