react-native-modern-elements
Version:
A modern, customizable UI component library for React Native
23 lines (22 loc) • 936 B
JavaScript
import { useState, useCallback } from "react";
import { BackHandler, ToastAndroid } from "react-native";
import { useFocusEffect } from "@react-navigation/native";
const useBackExit = () => {
const [backPressed, setBackPressed] = useState(false);
useFocusEffect(useCallback(() => {
const backAction = () => {
if (backPressed) {
BackHandler.exitApp(); // Exit if already pressed once
}
else {
setBackPressed(true);
ToastAndroid.show("Press again to exit.", ToastAndroid.SHORT);
setTimeout(() => setBackPressed(false), 2000); // Reset after 2 seconds
}
return true;
};
const backHandler = BackHandler.addEventListener("hardwareBackPress", backAction);
return () => backHandler.remove(); // Cleanup when navigating away
}, [backPressed]));
};
export default useBackExit;