仅在一个页面上调用函数BackHandler

时间:2018-04-25 20:43:53

标签: javascript react-native

我正在使用BackHandler函数在Android的本机Back按钮事件期间关闭我的应用程序。我希望此函数关闭应用程序只有在特定页面上才能工作。我该怎么做?

我的代码:

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 :(得分:0)

您可以实现一个标志,并在生成每个页面时相应地更新它,以指示是否必须显示该对话框。然后像这样编辑你的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;