Reactネイティブアプリがバックエンドに接続できない場合、[OK]ボタンが付いたアラートを表示します。これが発生した場合、アプリの実行を継続しても意味がないので、ボタンがクリックされたときにシャットダウンしたいと思います。どうすればいいですか?
キーはAppRegistryにあると思われますが、ドキュメントは少し不足しています。
今日、これを行うための反応固有の方法はありません。あなたは物事のネイティブ側からこれを達成する必要があります。
さらに、iOS用に開発していますか? Appleは、アプリは自分自身を閉じてはならないと述べています。
Androidの場合、 BackAndroid を使用してアプリを終了します。
import React, {
BackAndroid,
} from 'react-native';
BackAndroid.exitApp();
私は質問に答えるのが遅すぎますが、私が選んだ方法が誰かを助けるかもしれないと思ったので、私はこの質問に答えています。
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;
}
呼び出されたときに次のアクションを実行するネイティブモジュールを記述します。
IOS:
exit(9);
アンドロイド:
((YourApplication) self.getApplicationContext()).kill();
...編集...
または、私が作成したものを使用してください: https://www.npmjs.com/package/react-native-exit-app
これは私が達成した方法です:
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}
handleBackButtonClick() {
BackHandler.exitApp();
return true;
}
端末では、次のいずれかを押すことができます
> ctrl+c
または、単にすべてのノードを殺すことができます
> killall node