Я использую функцию BackHandler, чтобы закрыть свое приложение во время родного события кнопки «Назад» в Android. Я хочу, чтобы эта функция закрывала приложение, чтобы оно работало только тогда, когда оно находится на определенной странице. Как мне это сделать?
Мой код:
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.backPress);
}
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.backPress);
}
backPress = () => {
Alert.alert(
'Exit app',
'Exit app?',
[
{ text: 'No', onPress: () => console.info('Cancel Pressed'), style: 'cancel' },
{ text: 'Yes', onPress: () => BackHandler.exitApp() },
],
{ cancelable: false })
return true;
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете реализовать флаг и соответствующим образом обновлять его при создании каждой страницы, чтобы указать, нужно ли отображать диалоговое окно или нет. Затем отредактируйте функцию backPress следующим образом:
var app = {
backButtonDialog: true
};
backPress = () => {
if (app.backButtonDialog){
// Prompt for exit
Alert.alert(
'Exit app',
'Exit app?',
[
{ text: 'No', onPress: () => console.info('Cancel Pressed'), style: 'cancel' },
{ text: 'Yes', onPress: () => BackHandler.exitApp() },
],
{ cancelable: false })
return true;
}else{
// Do nothing
return false;
}
}
Затем вы просто устанавливаете app.backButtonDialog = true;, когда вы хотите, чтобы диалоговое окно отображалось, и app.backButtonDialog = false;, когда вы хотите, чтобы кнопка возврата ничего не делала.