Событие didFocus вызывается без параметров, когда мы вызываем navigate () на другой экран в той же вкладке навигатора - PullRequest
0 голосов
/ 18 марта 2019

У меня и моей команды возникли проблемы с выяснением ошибки.Мы используем глубокие ссылки, и наш компонент реагирования верхнего уровня прослушивает события URL.После этого мы вызываем dispatch () для ссылки на навигацию, установленной через контейнер реагирующей навигации.

Мы выводим пользователя на экран Authenticated (tab nav) -> Forum.Хотя, если пользователь запускает приложение на другой вкладке навигатора с проверкой подлинности, например «О программе», событие didFocus экрана форума вызывается без параметров.Вот структура навигатора:

SwitchNav
  Authenticated (TabNav)
    Forum (Stack nav)
      Forum
    About (Stack nav)
      About

Когда получена глубокая ссылка, наш компонент App.js имеет следующий код внутри обратного URL-адреса дескриптора.

_navigator.dispatch(
  NavigationActions.navigate({
    routeName,
    params
  })
)

// routeName = 'Forum', params = { someId: 10 }

Затем внутри Forum.js

componentDidMount() {
  this.navFocusListener = this.props.navigation.addListener(
    'didFocus',
    () => {
      console.log('didFocus')
      console.log(this.props.navigation.state.params);
    }
  )
}

Вызван didFocus, но state.params пуст, когда мы сфокусированы на другом экране, например, Compose.если экран форума сфокусирован, и мы нажимаем на глубокую ссылку, параметры заполняются правильно.Стоит отметить вкладку Forum - еще один стековый навигатор, который содержит один экран.У нас это есть, поэтому мы можем использовать панель заголовка стекового навигатора.

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