触发原理

原理就是监听键盘输入,比如扫一个为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...

});

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文标题: 浅谈在react中如何实现扫码枪输入

本文地址: http://www.cppcns.com/ruanjian/java/231980.html

java扫码枪键盘_浅谈在react中如何实现扫码枪输入相关推荐

  1. servlet对java的重要性_浅谈Servlet技术中的Listener起到的作用

    Listener是在servlet2.3中加入的,主要用于对Session,request,context等进行监控. 使用Listener需要实现响应的接口.触发Listener事件的时候,tomc ...

  2. java 定时任务怎么关闭_浅谈springboot项目中定时任务如何优雅退出

    在一个springboot项目中需要跑定时任务处理批数据时,突然有个Kill命令或者一个Ctrl+C的命令,此时我们需要当批数据处理完毕后才允许定时任务关闭,也就是当定时任务结束时才允许Kill命令生 ...

  3. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  4. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  5. python中if和elif的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  6. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  7. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  8. java bitset用途_浅谈Java BitSet使用场景和代码示例

    搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...

  9. java 多线程同步_浅谈Java多线程(状态、同步等)

    Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...

最新文章

  1. 随机存取:fseek(),ftell()
  2. 50 年人类登月史:那些不为人知的故事
  3. 《电路学习第三天》 之 彩扩机项目设计
  4. matlab 格式化文件,格式化matlab文件01_新建普通文件
  5. 团队阅读——怎样学习软件工程
  6. Linux常用命令和vi,gdb的使用
  7. python6清空屏幕,python:文件的读取、创建、追加、删除、清空
  8. 比特币矿商比特微正筹备美股上市
  9. 一篇文章让你学透Linux系统中的more命令
  10. Ubuntu 下 libev编译安装
  11. linux fastboot 工具下载,linuxadb fastboot 和VNC工具的安装使用
  12. matlab求均值和方差偏度峰度,均值、标准差、偏度、峰度的绘制
  13. jwPlayer播放器使用方法和参数
  14. 2020年机修钳工(中级)考试报名及机修钳工(中级)免费试题
  15. b站视频怎么引流?b站做什么视频有流量?b站流量引流技巧
  16. blockly -- 颜色(Block colour)
  17. 关于yum repo-pkgs命令使用测试
  18. 测试——Monkey测试的介绍及使用
  19. 跑车html5网页模板,html5代码画兰博基尼跑车,6不6?
  20. 计算机中用函数排序,编写一个sort()函数,实现选择法排序,在主函数中输入10个整数,主函数调用sort()函数实现排序后将数据输出。...

热门文章

  1. Maven环境下测试库和开发库的配置策略以及支持工具
  2. 南卡OE Pro上线!开放式耳机新里程碑!前所未有的音质舒适双冠
  3. 为什么很多聪明的人,却一辈子在社会最底层?
  4. 说说自己找互联网工作的经验
  5. python并集符号_Python No.18_集合以及表示符号
  6. 手机扫描条形码二维码原理和实现等网上资料整理
  7. 磁珠 符号_(整理)贴片磁珠规格.
  8. 【开发】前端工程——ReactJS
  9. android 打开和关闭输入法
  10. 美丽的小丑,谁的悲哀