[RN] React Native 再按一次退出

实现 React Native 再按一次退出

单页面:

... 
componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.onBackAndroid)
}

lastBackPressed = 0
onBackAndroid = () => {
    if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
        BackHandler.exitApp()
        return false
    }
    this.lastBackPressed = Date.now()
    ToastAndroid.show('再按一次退出应用', ToastAndroid.SHORT)
    return true
}

componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.onBackAndroid)
}
...

包含在导航器中:

let lastBackPressed = 0;
const defaultStateAction = RootNav.router.getStateForAction;
RootNav.router.getStateForAction = (action, state) => {
    if (DEVICE.android && state && action.type === NavigationActions.BACK && state.routes.length === 1) {
        if (this.lastBackPressed && this.lastBackPressed + 2000 >= Date.now()) {
            BackHandler.exitApp();
            return false;
        }
        this.lastBackPressed = Date.now();
        ToastUtil.showToast("再按一次退出应用");
        const routes = [...state.routes];
        return {
            ...state,
            ...state.routes,
            index: routes.length - 1,
        };
    } else {
        return defaultStateAction(action, state);
    }
};

本博客地址: wukong1688

本文原文地址:https://www.cnblogs.com/wukong1688/p/10959609.html

转载请著名出处!谢谢~~

原文地址:https://www.cnblogs.com/wukong1688/p/10959609.html