Как проверить, выполнима ли функция goBack () в реагирующей навигации? - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть кнопка «Назад», которая возвращает пользователю экран назад, но когда не осталось экранов для возврата, я хочу, чтобы он делал что-то еще, так вот мой код:

<Button onPress={()=>{
   if(CanGoBack){ // imaginary 'CanGoBack' variable
     this.props.navigation.goBack()
   }else{
     this.doSomething()
   }
}}/>

какя могу достичь этого?

1 Ответ

0 голосов
/ 01 марта 2019

В this.props.navigation есть функция с именем dangerouslyGetParent.Вы можете увидеть это в документации здесь .

В документации говорится следующее:

Еще один хороший пример использования этого - найти индексактивный маршрут в списке маршрутов родителя.Таким образом, в случае стека, если вы находитесь с индексом 0, вы можете не отображать кнопку возврата, но если вы находитесь где-то еще в списке, то вы должны отобразить кнопку возврата.

Таким образом, мы можем использовать следующее для получения индекса маршрута

this.props.navigation.dangerouslyGetParent().state.index

Таким образом, мы можем использовать это в onPress вашего Button следующим образом, чтобы проверить, вернулись ли мы кначало маршрута.

<Button onPress={() => {
  // get the index of the route
  let index = this.props.navigation.dangerouslyGetParent().state.index;
  // handle the index we get
  if (index > 0) {
    this.props.navigation.goBack();
  } else {
    this.doSomething();
  }
}}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...