浅谈在react中如何实现扫码枪输入
程序员文章站
2022-04-04 07:54:13
触发原理
原理就是监听键盘输入,比如扫一个为6970596130126的69条形码,用扫码枪扫一下会在光标位置依次输出:
6
9
7
0
5
9
6...
触发原理
原理就是监听键盘输入,比如扫一个为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... }); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。