11import React , { createRef , PureComponent , useEffect , useRef , useState } from 'react' ;
2- import { UIManager , findNodeHandle , NativeEventEmitter , View } from 'react-native' ;
2+ import { UIManager , findNodeHandle , NativeEventEmitter , View } from 'react-native' ;
33
44import { MlkitBarcodeViewManager } from './MlkitBarcodeViewManager' ;
55
@@ -21,6 +21,8 @@ const destroyFragment = (viewId) =>
2121
2222const eventEmitter = new NativeEventEmitter ( ) ;
2323
24+ const TAG = "MlkitBarcodeView: " ;
25+
2426export class MlkitBarcodeView extends PureComponent {
2527
2628 constructor ( props ) {
@@ -32,31 +34,30 @@ export class MlkitBarcodeView extends PureComponent {
3234 }
3335
3436 componentDidMount ( ) {
35- if ( this . props . enableQrScanner )
37+ if ( this . props . enableQrScanner )
3638 this . startScanner ( ) ;
3739 }
3840 componentWillUnmount ( ) {
3941 // Here goes the code you wish to run on unmount
4042 // console.log("MlkitBarcodeView: Unmounting...");
41- this . eventListener . remove ( ) ;
43+ this . eventListener && this . eventListener . remove ( ) ;
4244 // destroyFragment(viewId);
4345 }
4446
4547 componentWillReceiveProps ( newProps ) {
4648 this . props = newProps ;
4749 // console.log("MlkitBarcodeView :enableQrScanner :" + this.props.enableQrScanner);
48- if ( this . props . enableQrScanner ) {
49- this . setState ( { enableQr :true } , ( ) => {
50- setTimeout ( this . startScanner , 400 )
50+ if ( this . props . enableQrScanner && ! this . state . enableQr ) {
51+ this . setState ( { enableQr : true } , ( ) => {
52+ setTimeout ( this . startScanner , 400 )
5153 } )
52-
5354 }
54- else {
55- this . stopScanner ( ) ;
55+ else if ( this . state . enableQr ) {
56+ this . stopScanner ( ) ;
5657 }
5758 }
5859
59- startScanner = ( ) => {
60+ startScanner = ( ) => {
6061 this . eventListener = eventEmitter . addListener ( 'BARCODE_SCANNED' , ( event ) => {
6162 console . log ( event ) // "someValue"
6263 if ( this . props . onSuccess )
@@ -68,22 +69,22 @@ export class MlkitBarcodeView extends PureComponent {
6869
6970 }
7071
71- stopScanner = ( ) => {
72- // this.eventListener.remove();
73- const viewId = findNodeHandle ( this . ref . current ) ;
74- destroyFragment ( viewId ) ;
75- setTimeout ( ( ) => this . setState ( { enableQr :false } ) , 400 ) ;
72+ stopScanner = ( ) => {
73+ // this.eventListener.remove();
74+ const viewId = findNodeHandle ( this . ref . current ) ;
75+ destroyFragment ( viewId ) ;
76+ setTimeout ( ( ) => this . setState ( { enableQr : false } ) , 400 ) ;
7677 }
7778
7879
7980 render ( ) {
8081 if ( this . state . enableQr ) {
8182 return (
82- < View style = { { ... this . props . style } } >
83- < MlkitBarcodeViewManager
84- { ...this . props }
85- ref = { this . ref }
86- />
83+ < View style = { { position : 'absolute' } } >
84+ < MlkitBarcodeViewManager
85+ { ...this . props }
86+ ref = { this . ref }
87+ />
8788 </ View >
8889 ) ;
8990 }
0 commit comments