У меня есть проблема с BackHandler , проблема
при запуске приложения и переходе к экрану, скажем, «Зарегистрироваться» и касанию спины в моем мобильном телефоне, они будут запускать функциюи показать предупреждение для подтверждения, но теперь, когда я перехожу на любой другой экран и касаюсь спины, мне нужно будет просто вернуться к предыдущему экрану на каждом заднем BackHandler.exitApp ();работает, хотя я пишу, если имя маршрута - SignUp, просто выйдите из приложения, а не из других экранов
это мой код
Регистрация
import React from "react";
import {
Text,
TextInput,
ActivityIndicator,
View,
KeyboardAvoidingView,
ScrollView,
Image,
TouchableOpacity,
BackHandler,
Alert
} from "react-native";
export default class signUp extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
BackHandler.addEventListener("hardwareBackPress", this.backPressed);
}
componentWillUnmount() {
BackHandler.removeEventListener("hardwareBackPress", this.backPressed);
}
backPressed = () => {
let { routeName } = this.props.navigation.state;
console.log("route is : " + routeName);
if (routeName == "SignUp") {
console.log("ROUTE : " + routeName);
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;
} else {
return false;
}
};
render() {....}
}
Маршруты
import { createStackNavigator, createAppContainer } from "react-navigation";
import React from "react";
import { View } from "react-native";
import Splash from "../screens/Splash";
import Home from "../screens/Home";
import SignUp from "../screens/SignUp";
import SignIn from "../screens/SignIn";
import ForgetPassword from "../screens/ForgetPassword";
const Routes = createStackNavigator(
{
Splash: {
screen: Splash,
navigationOptions: {
header: null
}
},
SignUp: {
screen: SignUp,
navigationOptions: () => ({
// header: null
title: "Sign Up",
headerLeft: null,
headerTintColor: "#fc0301",
headerStyle: {
borderBottomColor: "white"
},
headerTitleStyle: {
color: "#fc0301",
textAlign: "center",
flex: 1,
elevation: 0,
fontSize: 25,
justifyContent: "center"
}
})
},
SignIn: {
screen: SignIn,
navigationOptions: {
title: "Sign In",
headerRight: <View />,
headerTintColor: "#fc0301",
headerStyle: {
borderBottomColor: "white"
},
headerTitleStyle: {
color: "#fc0301",
textAlign: "center",
flex: 1,
elevation: 0,
fontSize: 25,
justifyContent: "center"
}
}
},
ForgetPassword: {
screen: ForgetPassword,
navigationOptions: {
header: null
}
},
Home: {
screen: Home,
navigationOptions: {
header: null
}
}
},
{
initialRouteName: "Splash"
}
);
export default createAppContainer(Routes);