RN:自定义安卓BackHandler的相应逻辑

2023-04-02  本文已影响0人  春暖花已开

为了更好的用户体验,建议使用react-native-exit-appexitApp 来替代 BackHandler的。

import { useFocusEffect } from '@react-navigation/native'
import { useCallback, useRef } from 'react'
import { BackHandler } from 'react-native'
import ExitApp from 'react-native-exit-app'
import { ToastAtCenter } from '~/components/Toast'

function useRootBackBehavior() {
  const lastTime = useRef()

  useFocusEffect(
    useCallback(() => {
      const onBackPress = () => {
        if (lastTime.current && lastTime.current + 2000 >= new Date().getTime()) {
          ExitApp.exitApp()
          return true
        } else {
          lastTime.current = new Date().getTime()
          ToastAtCenter('再按一次退出应用')
          return true
        }
      }

      const subscription = BackHandler.addEventListener('hardwareBackPress', onBackPress)
      return () => subscription.remove()
    }, [])
  )
}

export default useRootBackBehavior
上一篇 下一篇

猜你喜欢

热点阅读