Как пройти навигацию через метод? - PullRequest
0 голосов
/ 09 октября 2018

Я новичок в реагирующей навигации, и я хотел бы передать "навигацию" в качестве реквизита, чтобы я мог ее использовать.Потому что, когда я пытался использовать его в другом приложении, он выдает сообщение об ошибке «undefined this.props.navigation и т. Д.»

Так вот, что я хотел бы сделать

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

Как вы можете видеть, я передаю навигацию через реквизит в мой композит с именем 'ChatBox'.Но проблема в том, что моя компоновка ChatBox не получает навигацию.Может ли кто-нибудь помочь мне?спасибо

1 Ответ

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

Есть несколько концепций, которые, я думаю, вы пропустили.

  1. Каждый компонент, упомянутый в классе навигатора стека, получает объект навигации в своей области видимости.Вы можете получить к ним доступ, используя this.props.navigation()
  2. . Если вам нужно передать объект навигации на любой другой экран, не упомянутый в классе стекового навигатора, вам потребуется предоставить его в качестве реквизита, например * 1007.*

В вашем случае ваш навигационный объект отправляется правильно, просто вы неправильно выбираете его в своем компоненте Chatbox.Ваша навигация в качестве опоры инкапсулирована в самом объекте навигации (.ie он присутствует в this.props.navigation.state.params.navigation), и поскольку вы не упомянули компонент Chatbox в вашем классе стекового навигатора, вы не можете ссылаться на объект навигации, как он есть.в настоящее время выходит за рамки.

Итак,

  1. Вы можете заменить компонент, отобразив компонент <Chatbox/> и предоставив ему реквизиты (как упомянуто в пункте 2 выше) вместо перехода к компоненту.
  2. Если вам нужно перейти к компоненту, вам потребуется определить экран Chatbox в классе стекового навигатора, а затем вы сможете использовать свой объект навигации.
...