web-dev-qa-db-fra.com

Comment puis-je quitter/fermer une application React Native?

Si mon application React Native ne parvient pas à se connecter à son serveur, je montre une alerte avec un bouton OK. Si cela se produit, il est inutile que l'application continue à s'exécuter. J'aimerais donc la fermer lorsque l'utilisateur clique sur le bouton. Comment puis-je faire cela?

Je soupçonne que la clé est dans AppRegistry mais la documentation est un peu maigre.

30
Nolan

Il n'y a pas de moyen spécifique pour réagir à cela aujourd'hui. Vous devrez accomplir cela du côté natal des choses.

De plus, développez-vous pour iOS? Apple a déclaré que les applications ne devraient pas se fermer elles-mêmes.

8
Adam Terlson

Pour Android, utilisez BackAndroid pour quitter l’application:

import React, {
    BackAndroid,
} from 'react-native';

BackAndroid.exitApp();
50
herbertD

Je réponds trop tard à la question, mais je pensais que la façon dont j'avais choisi pourrait aider quelqu'un, alors je réponds à cette question.

componentWillMount() {
   BackHandler.addEventListener('hardwareBackPress', this.backPressed);
}

componentWillUnmount() {
   BackHandler.removeEventListener('hardwareBackPress', this.backPressed);
}

backPressed = () => {
  Alert.alert(
    'Exit App',
    'Do you want to exit?',
    [
      {text: 'No', onPress: () => console.log('Cancel Pressed'), style: 'cancel'},
      {text: 'Yes', onPress: () => BackHandler.exitApp()},
    ],
    { cancelable: false });
    return true;
}
16
fazeel zama

Écrivez un module natif qui effectue les actions suivantes lorsqu'il est appelé:

IOS:

exit(9);

Android:

((YourApplication) self.getApplicationContext()).kill();

...MODIFIER...

Ou utilisez simplement celui que j'ai créé: https://www.npmjs.com/package/react-native-exit-app

10
WiRa

Voici comment j'ai réalisé:

  componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
  }
  handleBackButtonClick() {
    BackHandler.exitApp();
    return true;
  }
1
Led

sur le terminal, vous pouvez appuyer sur 

> ctrl+c

ou vous pouvez simplement tuer tous les nœuds

> killall node
0
Abdul Wahab