QRコード共有の落とし穴を忘れないでください

前提条件:

期待される結果:

プロジェクト内にコード スキャン機能を追加しました。QR コード ルールはプロジェクトの外部でも設定されます。コードをスキャンした後、ミニ プログラム内にジャンプし、対応する結果ページにジャンプできます。

実績:

WeChat からミニ プログラムにスキャンして、初めて結果ページにジャンプしました。その後、アプレット内で QR コード スキャン機能がオンになりましたが、QR コード スキャン操作は実行されず、QR コード スキャン ツールが開かれただけでした。戻るときは、最後のスキャン結果ページに再度アクセスします。

理由:

アプリシーン値 1001 は、QR コードをスキャンするシーン値です。内部コード スキャンと外部コード スキャンのシーン値は両方とも 1011 です。監視した e.query の値はまだ元の値です。つまり、更新または削除操作はありません。WeChat関係者は、内部コードスキャンと外部コードスキャンのシーン値を区別していません。

解決:

getApp().globalData.isScanFail=true を使用してグローバル変数を定義し、内部の scanCode の Complete または Fail にグローバル変数を追加し、app.vue がリッスンするときの判定を追加します。この値があれば、結果ページに移動してください。

内部コード スキャン scanCode.vue:

      uni.scanCode({
        onlyFromCamera: false,
        success: function (res) {
          console.log('条码类型:' + res.scanType);
          console.log('条码内容:' + res.result);
          base.joinscan(res.result);
        },
        complete: function (res) {
          uni.showLoading({
            title: '识别中...',
          });
          setTimeout(function () {
            uni.hideLoading();
          }, 2000);
        },
        fail: function (res) {
        //添加扫码失败监听全局变量
          getApp().globalData.isScanFail = true;
          setTimeout(function () {
            uni.hideLoading();
          }, 2000);
        },
      });

 

外部コードのスキャンと監視 app.vue

        console.log('跳到扫码失败页面', res.message);
          // 获取当前路由,已经处于扫码失败页面,跳过此处判断
          let datat = {
            message: res.message,
          };
            //判断全局变量,扫码失败监听结果判断
          if(this.globalData.isScanFail) {
            this.flagtarget('pages/home/home', {});
          } else {
          this.flagtarget('pages/scanFaceTag/scanFail', datat);
          }

app.vue では、onload およびメソッドと同じレベルにあるグローバル変数を忘れずに定義してください。


  globalData: {
    isScanFail: false,
  },
//和method同级

 


 

お役に立てたら、少しハートをいただけませんか~

おすすめ

転載: blog.csdn.net/weixin_38791717/article/details/110224695