Как получить доступ к навигационному объекту в реагирующем - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в реагирующей навигации и пытаюсь реализовать простую навигацию.Проблема в том, что я не могу найти способ передать объект «навигации» на экран желаний.Я пытался использовать withNavigation и т. Д. Он по-прежнему выбрасывает "this.props.navigation" не определено!Из того, что я прочитал, если я объявил экран в rootStack, объект навигации автоматически передается в компонент правильно?

так вот мой rootStack

/* ROUTING RULES */
const RootStack = createStackNavigator(
    {
      Main: Main,
      ChatBox: ChatBox,
    },
    {
      initialRouteName: 'Main',
      
     }
    

   
  );
/* End */

и этот метод я использую для навигации по экрану чата

()=>this.props.navigation.navigate('ChatBox', {
                avatarUrl: matches.avatarUrl,
                name: matches.name,
              })

Я заметил, что на главном экране я мог без проблем получить доступ к навигации, но когда я попытался запустить простой console.log на экране chatBox

  constructor(props){
   super()
  console.log(this.props.navigation)
  
  }

Я получаю "Ошибка типа: undefined не является объектом (оценивающим__this.props.navigation ')"

Может кто-нибудь помочь мне разгадать эту тайну ??спасибо:)

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Попробуйте использовать методы жизненного цикла вместо конструктора

componentDidMount() {
    console.log(this.props.navigation)
}
0 голосов
/ 14 октября 2018

В вашем конструкторе это не нужно для доступа к реквизиту.Попробуйте это

constructor(props){
    super(props);
    console.log(props.navigation.getParam('avatarUrl');
}

РЕДАКТИРОВАТЬ: вы должны были передать реквизит супер тоже!не отправка может привести к ошибкам.

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