Я пытаюсь реализовать экран блокировки. Экран возвращается только после ввода правильного пароля, в противном случае экран нельзя закрыть. Но если вы нажмете кнопку «Назад» на Android, он всегда вернется. Я попытался использовать BackHandler
, но это не удалось. Кажется, это связано с StackNavigator
. Как я могу ничего не делать, когда нажата кнопка BackButton?
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);
вставка BackHandler.addEventListener ('hardwareBackPress', () => false)
в componentDidMount
также имеет тот же результат.