浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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)