web-dev-qa-db-ja.com

Reactネイティブアプリを終了/シャットダウンするにはどうすればよいですか?

Reactネイティブアプリがバックエンドに接続できない場合、[OK]ボタンが付いたアラートを表示します。これが発生した場合、アプリの実行を継続しても意味がないので、ボタンがクリックされたときにシャットダウンしたいと思います。どうすればいいですか?

キーはAppRegistryにあると思われますが、ドキュメントは少し不足しています。

36
Nolan

今日、これを行うための反応固有の方法はありません。あなたは物事のネイティブ側からこれを達成する必要があります。

さらに、iOS用に開発していますか? Appleは、アプリは自分自身を閉じてはならないと述べています。

11
Adam Terlson

Androidの場合、 BackAndroid を使用してアプリを終了します。

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

BackAndroid.exitApp();
56
herbertD

私は質問に答えるのが遅すぎますが、私が選んだ方法が誰かを助けるかもしれないと思ったので、私はこの質問に答えています。

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;
}
30
fazeel zama

呼び出されたときに次のアクションを実行するネイティブモジュールを記述します。

IOS:

exit(9);

アンドロイド:

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

...編集...

または、私が作成したものを使用してください: https://www.npmjs.com/package/react-native-exit-app

11
WiRa

これは私が達成した方法です:

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

端末では、次のいずれかを押すことができます

> ctrl+c

または、単にすべてのノードを殺すことができます

> killall node
0
Abdul Wahab