2022-06-17
cordova.plugins.barcodeScannerを使ってスキャナーした値を即座にsetStateしようとすると
以下のようにCannot read property ‘setState’ of undefined.エラーが発生して
stateに失敗します。
</pre> window.cordova.plugins.barcodeScanner.scan( function (result) { this.setState({data: result}) }, function (error) { console.log(error); }, { prompt : "読み取りたい商品のバーコードにかざしてください", // Android disableSuccessBeep: true, } ); <pre>
これは、function (result){}のカッコ内がプラグインのみが動く
限定的な領域に指定されている為に起こります。
他にもthis.prop.history.pushも直接書くと同じように失敗
してしまいます。
スキャナー後すぐにsetStateをしたい場合はカッコ内に関数を
定義しその中でsetStateするのがベストです。
</pre> window.cordova.plugins.barcodeScanner.scan( function (result) { that.samplefunc(result); }, function (error) { console.log(error); },{ prompt : "読み取りたい商品のバーコードにかざしてください", // Android disableSuccessBeep: true, } ); <pre>