Вызов функции BackHandler только на одной странице

Я использую функцию 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;
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
567
1

Ответы 1

Вы можете реализовать флаг и соответствующим образом обновлять его при создании каждой страницы, чтобы указать, нужно ли отображать диалоговое окно или нет. Затем отредактируйте функцию 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;, когда вы хотите, чтобы кнопка возврата ничего не делала.

Другие вопросы по теме