Вызов функции BackHandler только на одной странице - PullRequest
0 голосов
/ 25 апреля 2018

Я использую функцию 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.log('Cancel Pressed'), style: 'cancel' },
    { text: 'Yes', onPress: () => BackHandler.exitApp() },
  ],
  { cancelable: false })
return true;
}

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете реализовать флаг и обновлять его соответствующим образом всякий раз, когда вы генерируете каждую страницу, чтобы указать, должен ли отображаться диалог или нет.Затем отредактируйте свою функцию backPress следующим образом:

var app = {
    backButtonDialog: true
};

backPress = () => {
    if(app.backButtonDialog){
        // Prompt for exit
        Alert.alert(
          'Exit app',
          'Exit app?',
          [
            { text: 'No', onPress: () => console.log('Cancel Pressed'), style: 'cancel' },
            { text: 'Yes', onPress: () => BackHandler.exitApp() },
          ],
          { cancelable: false })
        return true;
    }else{
        // Do nothing
        return false;
    }
}

Затем вы просто устанавливаете app.backButtonDialog = true;, когда хотите, чтобы диалог отображался, и app.backButtonDialog = false;, когда вы хотите, чтобы кнопка ничего не делала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...