Я использую реагирующую навигацию v1.x. Мне нравится иметь глобальный доступ к navigation
опоре навигатора. Я надеюсь, что если я сделаю globalNavigation.addListener()
или goBack
и т. Д. Без аргументов, это будет так, как если бы я делал это с текущего экрана. Я также хочу передать ему некоторый аргумент, чтобы он выглядел так, как будто я назвал его неким «ключом». Я использую этот глобал из разных мест (например, промежуточное программное обеспечение и т.д.).
Было бы очень полезно также получить «getCurrentRouteName» и «getCurrentRouteKey». В предыдущей версии 1.x я делал нестандартные вещи в маршрутизаторах и надеялся избежать этого сейчас.
Я попытался создать ссылку на навигатор и использовать ref._navigation
для таких вещей, как navigate
, goBack
и т. Д. Я хотел использовать его с addListener
.
Вот как я получаю и удерживаю реф:
export AppNavigatorUtils = {}
class AppContent extends Component<Props> {
constructor(props: Props) {
super(props);
AppNavigatorUtils.getNavigation = this.getNavigation;
}
render() {
return (
<AppNavigator ref={this.refNavigator} />
)
}
refNavigator = el => this.navigator = el
getNavigation = () => this.navigator ? this.navigator._navigation : null
}
Doing AppNavigatorUtils.getNavigation().addListener('didBlur, (e) => console.log('blur from e:', e))
не работает. Я ожидал, что это добавит слушателя к текущему экрану фокусировки.
У кого-нибудь есть идеи?