【问题标题】:how to exit react native app when clicking a button?单击按钮时如何退出反应本机应用程序?
【发布时间】:2017-05-14 09:29:53
【问题描述】:

我正在使用 react native 开发一个移动应用程序,我想在单击按钮后退出该应用程序。

我的情况是,如果用户在某些天后没有验证他/她的电子邮件,我会在每次打开应用程序时提示用户 Alert Dialog,阻止应用程序使用,直到用户电子邮件得到验证。

那么在用户点击确定后,我如何以编程方式退出应用程序?

【问题讨论】:

标签: javascript android ios facebook react-native


【解决方案1】:

对于iOS,您可以使用以下库:https://github.com/wumke/react-native-exit-app。它使用本机库以编程方式退出应用程序。您可以使用以下方式退出应用:

RNExitApp.exitApp()

对于android,您可以使用BackAndroid from https://facebook.github.io/react-native/docs/backandroid.html

BackAndroid.exitApp()

【讨论】:

  • BackAndroid 已弃用。请改用 BackHandler。
  • @NirLevy 作者将许可证更新为更宽松的 MIT 许可证 :)
【解决方案2】:
import BackHandler from 'react-native';
// Note: work only on Android
    BackHandler.exitApp();

【讨论】:

    【解决方案3】:

    如果您在单击按钮时退出应用程序,Apple 会拒绝您的 iOS 应用程序。您可以只显示没有按钮的警报。用户将无法关闭警报并进入应用程序,使其无用。

    【讨论】:

    • 您的解决方案是有道理的,但问题是如果没有反应本机的按钮,则无法显示警报。默认情况下包含一个按钮,并且没有办法根据我到目前为止所读到的内容来隐藏它。你知道如何在没有按钮的情况下显示警报吗?
    【解决方案4】:

    BackAndroid 应该可以帮到你。使用Alert回调使用BackAndroid

    var {
      Alert,
      BackAndroid,
    } = ReactNative;
    
    
    
    Alert.alert(
                'Alert Title',
                alertMessage,
                [
                  {text: 'OK', onPress: () => BackAndroid.exitApp()},
                ]
    );
    

    【讨论】:

    • 这个应该和平台检查一起使用吗? BackAndroid不适用于iOS!
    • BackHandler.exitApp() 仅退出当前屏幕。如何退出应用程序并清除堆栈。
    • BackHandler.exitApp() 适用于 android 和 ios。
    • @Moein 不,它没有
    【解决方案5】:
    <Text style = {something}
            onPress ={
            ()=>{
            console.log('clicked');
            return BackHandler.exitApp();
            }
            }>Exit</Text>
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    【解决方案6】:

    使用BackHandler 类中的exitApp() 方法在android 中退出您的应用。

    import { View, TouchableOpacity, Text, BackHandler } from 'react-native';
    
    class Scan extends Component {
        render() {
            return (
                <View>
                    <TouchableOpacity onPress={()=> BackHandler.exitApp()}>
                        <Text>Quit</Text>
                    </TouchableOpacity>
                </View>
            )
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2016-11-29
      相关资源
      最近更新 更多