【cordova】コールバック内でsetStateをしてエラーになった時の対処法

 

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>
>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG