UNPKG

701 BTypeScriptView Raw
1import type {
2 NavigationContainerRef,
3 ParamListBase,
4} from '@react-navigation/core';
5import * as React from 'react';
6import { BackHandler } from 'react-native';
7
8export default function useBackButton(
9 ref: React.RefObject<NavigationContainerRef<ParamListBase>>
10) {
11 React.useEffect(() => {
12 const subscription = BackHandler.addEventListener(
13 'hardwareBackPress',
14 () => {
15 const navigation = ref.current;
16
17 if (navigation == null) {
18 return false;
19 }
20
21 if (navigation.canGoBack()) {
22 navigation.goBack();
23
24 return true;
25 }
26
27 return false;
28 }
29 );
30
31 return () => subscription.remove();
32 }, [ref]);
33}