React Native控制返回操作的hook

36 阅读1分钟
import { useEffect } from 'react';

import { BackHandler } from 'react-naive';

const useHardwareBackButton = (handleBackPress?: Function) => {

  const onBackPress = () => {
    if (typeof handleBackPress === 'function') {
      handleBackPress();
      return true;
    }

    // 默认情况下允许系统处理返回键
    return false;
  }

  const handleUninstall = () => {
    BackHandler.removeEventListener('hardwareBackPress', onBackPress);
  }

  useEffect(() => {
    BackHandler.addEventListener('hardwareBackPress', onBackPress);

    return () => {
      handleUninstall();
    }
  }, []);

  return {
    // 返回或跳转至其他页面都需要调用此方法
    handleUninstall
  }
}

export default useHardwareBackButton;