xref: /MusicFree/src/hooks/useHardwareBack.ts (revision 34588741f7af4f0b6c513ac5f3230911679b5d3e)
1547b4a5cS猫头猫import {useEffect, useRef} from 'react';
2547b4a5cS猫头猫import {BackHandler, NativeEventSubscription} from 'react-native';
3547b4a5cS猫头猫
4547b4a5cS猫头猫export default function (
5547b4a5cS猫头猫    onHardwareBackPress: () => boolean | null | undefined,
6*34588741S猫头猫    deps: any[] = [],
7547b4a5cS猫头猫) {
8547b4a5cS猫头猫    const backHandlerRef = useRef<NativeEventSubscription>();
9547b4a5cS猫头猫    useEffect(() => {
10547b4a5cS猫头猫        if (backHandlerRef.current) {
11547b4a5cS猫头猫            backHandlerRef.current.remove();
12547b4a5cS猫头猫            backHandlerRef.current = undefined;
13547b4a5cS猫头猫        }
14547b4a5cS猫头猫
15547b4a5cS猫头猫        backHandlerRef.current = BackHandler.addEventListener(
16547b4a5cS猫头猫            'hardwareBackPress',
17547b4a5cS猫头猫            onHardwareBackPress,
18547b4a5cS猫头猫        );
19547b4a5cS猫头猫
20547b4a5cS猫头猫        return () => {
21547b4a5cS猫头猫            if (backHandlerRef.current) {
22547b4a5cS猫头猫                backHandlerRef.current.remove();
23547b4a5cS猫头猫                backHandlerRef.current = undefined;
24547b4a5cS猫头猫            }
25547b4a5cS猫头猫        };
26*34588741S猫头猫    }, deps);
27547b4a5cS猫头猫}
28