У меня была почти такая же проблема. Сканер не останавливает сканирование при отображении другого вида (используя reactivate={true}
). Я использую реагирующую навигацию, и поэтому я пришел к следующему решению.
Вы можете прослушивать, что происходит с вашим видом, с помощью focus
и blur
.
this.props.navigation.addListener('focus', () => {
this.setState({viewFocused: true});
});
this.props.navigation.addListener('blur', () => {
this.setState({viewFocused: false});
});
Примечание. : вы помещаете этот фрагмент кода в componentDidMount
или используете React.useEffect
.
На основе состояния viewFocused
вы можете отобразить сканер QR-кода.
this.state.viewFocused && (
<QRCodeScanner
onRead={onRead}
reactivate={true}
reactivateTimeout={2000}
/> );
Это помогает мне решить мою проблему. Не сканировать при отображении других видов, но сканировать, если вид отображается снова. Кредиты pkyeck на github.com