Навигация между компонентами в React Native

Мне нужно переключаться между двумя представлениями в React Native. Но проблема в моем компоненте, где кнопка для навигации находится на другом компоненте. Я использую реагирующую навигацию.

Позволь мне показать тебе :

У меня есть компонент MainPage здесь

class MainPage extends Component {
  render() {
    return <View style = {styles.container}>
              <ComponentWithButton /> 
          </View>
  }
}

Итак, в моем компоненте ComponentWithButton:

class ComponentWithButton extends Component {
      goToComponent(){
         this.props.navigation.push('Next')
      }
      render() {
        return <View style = {styles.container}>
                  <Button onPress = {this.goToComponent.bind(this)}/> 
              </View>
      }
    }

Мой следующий компонент называется NextComponent.

У меня ошибка undefined не является объектом (оценка "this.props.navigation.push")

Мой навигатор по стеку таков:

const RootStack = StackNavigator(
  {
    Main: {
      screen: MainPage
    },
    Next: {
      screen: NextComponent
    }
  },
  {
    initialRouteName: "Main"
  },
  {
    navigationOptions: {
      header: { visible: false }
    }
  }
);

Я пытаюсь запустить свой код только с одним компонентом, который отлично работает. Я думаю, что проблема в том, что ComponentWithButton не вызывается в моем RootStack или что-то в этом роде. Я не знаю я новичок

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
2 575
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

вы не передали навигационные реквизиты <ComponentWithButton />

сделай что-нибудь вроде этого

<ComponentWithButton navigation = {this.props.navigation}/>

также метод должен быть

this.props.navigation.navigate('Next')

если я помню

@Yapoto, если это правильный ответ, пожалуйста, проверьте его, чтобы я получил кредит

Walter Shub 15.08.2018 21:46

Ты слишком быстр, просто подожди 2 минуты;)

Monsieur Sam 15.08.2018 21:47

В response-navigation есть функция withNavigation, которая заполняет свойства навигации в любом из ваших компонентов. Просто используйте это так:

import { withNavigation } from 'react-navigation';

class ComponentWithButton extends Component {
      goToComponent(){
         this.props.navigation.push('Next')
      }
      render() {
        return <View style = {styles.container}>
                  <Button onPress = {this.goToComponent.bind(this)}/> 
              </View>
      }
}

export default withNavigation(ComponentWithButton);

Не знаю, но я так думаю!

mcssym 15.08.2018 22:02

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