注:本文使用的是 uniapp 語法。
微信小程序提供了掃碼API:wx.scanCode,但它只能掃一次碼,想要實現連續掃碼,需要借用 camera 組件。camera 組件不僅能拍照,還具有掃碼功能,只要將它的 mode 屬性設置為 scanCode,就會在掃碼識別成功時觸發 bindscancode 事件(在 uniapp 中是 scancode 事件)。
<camera mode="scanCode" device-position="back" flash="off" @scancode="takeCode"></camera>
在 takeCode 函數里對掃碼結果進行處理:
takeCode: (e) => { if(scanFunctionIsUseable) { this.scanFunctionIsUseable = false; // 對掃碼結果進行處理 console.log(e.detail.result); // 掃碼間隔兩秒 setTimeout(() => { this.scanFunctionIsUseable = true; }, 2000) } }
需要注意的是,攝像頭對着碼時,會重復掃描多次,這顯然不是我們想要的。為了避免這種情況,可以增加一個 scanFunctionIsUseable 標志位,在掃碼成功時令它為 false,隔兩秒令它為 true,這樣就可以隔兩秒再去處理掃碼結果。
參考:https://blog.csdn.net/du771278794/article/details/86219165