Передача параметра с экрана в SwitchNavigator на другой в TabNavigator

У меня возникли проблемы с передачей параметров с экрана в switchNavigator на другой в TabNavigator.

setvalue(response){
    this.setState({profile :response})
    
    console.warn(this.state.profile);
    this.state.navigate('Navigators',{profile: profile})
   
  }

Профиль содержит объект JSON сведений о профиле. Навигация отправляет дату на экран «Навигаторы», который является просто TabNavigator.

const Navigators = createAppContainer(Userstack);

export default RootStack = createSwitchNavigator(
  {
    Home: {
      screen: Login
    },
    Register: {
      screen: Registration
    },
   Navigators: {
      screen: Navigators
    },
  },
  {
    initialRouteName: 'Home'
  }

);

Как создается TabNavigator.

export default Userstack = createBottomTabNavigator(
  {
    User: {
      screen: Profile
    },
    Discovery: {
      screen: DiscoveryNavigator
    },
  },
  {
      defaultNavigationOptions: ({ navigation }) => ({
        tabBarIcon: ({ tintColor }) => {
          const { routeName } = navigation.state;
          let IconComponent = Ionicons;
          let iconName;
          if (routeName === 'User') {
            iconName = `md-contact`;
            
            IconComponent = HomeIconWithBadge;
          } else if (routeName === 'Discovery') {
            iconName = `md-search`;
          }
          return <IconComponent name = {iconName} size = {27} color = {tintColor} />;
        },
      }),
      tabBarOptions: {
        activeTintColor: '#00FA9A',
        inactiveTintColor: 'black',
      },
    }

);

Экран, на котором я хочу получить доступ к информации профиля,

export default class Profile extends Component {
  constructor(props){
    super(props);
    console.warn(props)
    this.State = {
      profile: this.props.navigation.params.profile
    }
    
  }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
481
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пробовали this.props.navigation.state.params?

По ссылке: https://reactnavigation.org/docs/params.html,

Вы также можете напрямую получить доступ к объекту params с помощью this.props.navigation.state.params. Это может быть null, если параметры не были предоставлены, и поэтому обычно проще просто использовать getParam, чтобы вам не приходилось иметь дело с этим случаем.

Спасибо за ответ, Да, я пробовал примеры из ссылки. Я думаю, что проблема может заключаться в том, что данные передаются в «Навигатор» вместо экрана «профиль», и это вызывает «нулевой»/неопределенный.

Vivid Naz 03.03.2019 21:36

Да, профиль this.state.navigate('Navigators',{profile: profile}) не определен. Можете ли вы добавить this.state.navigate('Navigators',{profile: 'profile'}); Just to see if you are getting param` в виде строки или нет. Если это работает, замените это на console.info(response); //check in you getting the response this.state.navigate('Navigators',{profile: response}); Это должно решить проблему.

Subhendu Kundu 03.03.2019 21:39

Я пробовал это раньше, и проблема даже в попытке передать строку, которая появляется как неопределенная в моем 3-м блоке кода, куда ведет «Навигатор», и мне интересно, передается ли туда параметр. Поскольку он решает перейти к профилю, я не думаю, что параметр передается, следовательно, он не определен. Я просто не знаю, как взять параметр, который я получаю в «Навигаторе», и отправить его на экран профиля.

Vivid Naz 03.03.2019 21:46

Другие вопросы по теме