У меня есть случай, когда у меня в приложении есть нижний навигатор вкладок. Первая нижняя вкладка - это навигатор стека, состоящий из главного домашнего экрана и экрана siteDetail. Пользователь может перейти с главного домашнего экрана на экран SiteDetail. Точно так же на нижней вкладке есть и другие элементы.
Каждый раз, когда пользователь нажимает кнопку возврата, когда он находится на экране SiteDetail, он возвращается на главную домашнюю страницу (это очевидно). Но перед этим мне нужно обновить редуктор. Итак, я реализовал прослушиватель BackHandler как:
constructor(props){
super(props);
//.........
this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
}
componentDidMount() {
this.fetchSiteDetail();
BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
}
handleBackButtonClick() {
if (this.props.isRestroDetailPage) {// doesn't work of course
this.props.unselectSite();
}
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress');
}
Слова бэкхендлера соответствуют замыслу. Но это также работает, когда я перехожу к другим нижним вкладкам и нажимаю кнопку возврата. Я легко настроил мягкую кнопку возврата, но для жесткой слушатель слушает нажатия со всех нижних вкладок.
Я понимаю такое поведение, но как я могу заставить программу применять this.props.unselectSite()
только тогда, когда я нажимаю кнопку возврата, когда я нахожусь на экране SiteDetail. Я использую реагирующую навигацию v5, если это хоть как-то полезно.