react-native - React Native Android - 如何在 StackNavigator 中禁用 android 后退按钮
问题描述
我正在尝试实现锁定屏幕。只有当密码正确时屏幕才会返回,否则不能退出屏幕。但是,如果您在 Android 上按下返回按钮,它总是会返回。我尝试使用BackHandler
但失败了。似乎与StackNavigator
. 按下后退按钮时,我怎么能什么都不做?
import React, { PureComponent } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import PINCode from '@haskkor/react-native-pincode';
import { BackHandler } from 'react-native';
import {
View, Text, Button,
} from 'native-base';
import { NavigationEvents } from 'react-navigation';
import Colors from '../common/Colors';
class LockScreenContainer extends PureComponent {
static navigationOptions = () => ({
header: false,
gesturesEnabled: false,
});
finishProcess = async () => {
const { navigation } = this.props;
navigation.goBack();
}
render() {
const { navigation,isLock } = this.props;
return (
<View style={{ backgroundColor: Colors.GRAY_LV0, justifyContent: 'center', flex: 1 }}>
<NavigationEvents
onWillBlur={() => BackHandler.removeEventListener('hardwareBackPress')}
onWillFocus={() => BackHandler.addEventListener('hardwareBackPress', () => false)}
/>
<PINCode
status={isLock ? 'enter' : 'choose'}
finishProcess={this.finishProcess}
/>
</View>
);
}
}
export default connect(
state => ({
isLock: state.lock.isLock,
}),
undefined,
)(LockScreenContainer);
insert BackHandler.addEventListener ('hardwareBackPress', () => false)
intocomponentDidMount
也有同样的结果。
解决方案
您可以执行以下操作
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this.backButtonActionCheck);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress',this.backButtonActionCheck);
}
backButtonActionCheck = () => {
// Your logic to check if user should go back or stay
}
推荐阅读
- windows - UFT 14.03 未识别(也未记录)Web Chrome Beta 72 对象
- scikit-learn - 在训练之前执行图形切割或作为基于像素的分类的后处理
- google-cloud-platform - 使用服务帐户时项目 XXX 的容器分析.occurrences.get 被拒绝
- javascript - 如何在角度创建自定义类型
- javascript - 如何进行登录验证
- python - pandas Series.index 行为不允许在单行操作中重新分配索引
- python - 确定对象的类型是否与通过类型模块定义的嵌套类型匹配
- python - 报纸python缓存问题,每次调用相同的输出
- javascript - ReferenceError onclick JavaScript
- asp.net-core - Kubernetes 上的 SignalR,让我们加密入口服务