株式会社シーポイントラボ | 浜松のシステム・RTK-GNSS開発

【cordova】cordova.plugins.barcodeScannerのfunction内で直接stateを指定するとエラーになる

cordova使いにはなじみのある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>
  • この記事いいね! (0)