reactjs 如何退出/关闭React Native应用?

kyks70gy  于 2023-01-25  发布在  React
关注(0)|答案(9)|浏览(355)

如果我的React Native应用无法连接到其后端,我会显示一个带有“确定”按钮的警报。如果发生这种情况,应用继续运行没有意义,因此我希望在单击该按钮时关闭它。我该如何操作?
我怀疑键在AppRegistry中,但文档有点少。

wbrvyc0a

wbrvyc0a1#

对于Android,使用BackHandler退出应用程序:

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

BackHandler.exitApp();
osh3o9ms

osh3o9ms2#

我回答这个问题太晚了,但我认为我选择的方式可能会帮助到某人,所以我回答了这个问题。

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;
}
fafcakar

fafcakar3#

现在还没有React-原生的特定方法来做这件事,你必须从事物的原生方面来完成这件事。
此外,你是为iOS开发的吗?苹果已经表示,应用程序不应该自动关闭。

bejyjqdl

bejyjqdl4#

编写一个本机模块,在调用时执行以下操作:
监督厅:

exit(9);

安卓:

((YourApplication) self.getApplicationContext()).kill();
    • 编辑**

或者使用我创建的一个:https://www.npmjs.com/package/react-native-exit-app

blmhpbnm

blmhpbnm5#

我是这样做到的:

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

5gfr0r5j6#

这个npm模块帮助我解决了同样的问题-react-native-exit-app

import RNExitApp from 'react-native-exit-app';
...
RNExitApp.exitApp();
...
n7taea2i

n7taea2i7#

仅适用于Android*按下后退出 *

import { BackHandler } from "react-native";

useEffect(() => {
  BackHandler.addEventListener("hardwareBackPress",()=>{
    BackHandler.exitApp();
  });
}, []);
mbyulnm0

mbyulnm08#

您只需抛出异常即可关闭iOSAndroid上的应用:

const exitApp = () => {
  throw {};
}

这将在调试模式下显示错误,但在生产模式下,应用程序将因崩溃而自行退出

0ve6wy6x

0ve6wy6x9#

// only works for android

import React, { useEffect } from 'react';
import { BackHandler } from 'react-natve';

useEffect(() => {
  setTimeout(() => {
     BackHandler.exitApp();
  }, 2000);
}, []);

相关问题