У меня и моей команды возникли проблемы с выяснением ошибки.Мы используем глубокие ссылки, и наш компонент реагирования верхнего уровня прослушивает события 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 - еще один стековый навигатор, который содержит один экран.У нас это есть, поэтому мы можем использовать панель заголовка стекового навигатора.