91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談在react中如何實現掃碼槍輸入

發布時間:2020-10-19 09:40:31 來源:腳本之家 閱讀:665 作者:張君卓 欄目:web開發

觸發原理

原理就是監聽鍵盤輸入,比如掃一個為6970596130126的69條形碼,用掃碼槍掃一下會在光標位置依次輸出:

6
9
7
0
5
9
6
1
3
0
2
6

但這不是完整的,所以需要寫一個函數scanEvent來整理收集到的每個編號。

let code = '';
let lastTime,
  nextTime,
  lastCode,
  nextCode;


function scanEvent(e, cb) {
  nextCode = e.which;
  nextTime = new Date().getTime();

  if (lastCode != null && lastTime != null && nextTime - lastTime <= 30) {
    code += String.fromCharCode(lastCode);
  } else if (lastCode != null && lastTime != null && nextTime - lastTime > 100) {
    code = '';
  }

  lastCode = nextCode;
  lastTime = nextTime;
  if (e.which === 13) {
    cb(code);
    console.log('code', code);
    code = '';
  }
}

export { scanEvent };

react中的坑

當我們想在willComponentUnMount階段移除監聽器時,需要傳遞函數名,否則無法移除!!這是非常值得注意的一點。

完整使用

class Sample extends React.Component{
  componentDidMount(){
    window.addEventListener('keypress', this.scanWrapper, false);
  }

  componentWillUnmount() {
    window.removeEventListener('keypress', this.scanWrapper, false);
  }

  scanWrapper(e) {
    scanEvent(e, (code) => {
      // to do something...
    });
  }
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

怀柔区| 商丘市| 大埔县| 中江县| 九龙坡区| 合作市| 天峨县| 海南省| 锡林浩特市| 庆安县| 抚顺县| 千阳县| 安溪县| 巴塘县| 柘荣县| 自治县| 孝昌县| 修文县| 元氏县| 张北县| 霍山县| 依兰县| 凌海市| 根河市| 石台县| 忻州市| 沂源县| 扎兰屯市| 七台河市| 中西区| 绵竹市| 公安县| 辽阳县| 米易县| 沈阳市| 梁河县| 炎陵县| 民乐县| 江陵县| 天峻县| 建阳市|