浅谈在react中如何实现扫码枪输入

 更新时间:2018年07月04日 10:48:03   作者:张君卓  
这篇文章主要介绍了浅谈在react中如何实现扫码枪输入,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

触发原理

原理就是监听键盘输入,比如扫一个为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-router-dom入门使用教程(路由的模糊匹配与严格匹配)

    react-router-dom入门使用教程(路由的模糊匹配与严格匹配)

    这篇文章主要介绍了react-router-dom入门使用教程,主要介绍路由的模糊匹配与严格匹配,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • react antd如何防止一份数据多次提交

    react antd如何防止一份数据多次提交

    这篇文章主要介绍了react antd如何防止一份数据多次提交问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • React+Koa实现文件上传的示例

    React+Koa实现文件上传的示例

    这篇文章主要介绍了React+Koa实现文件上传的示例,帮助大家更好的理解和学习使用React,感兴趣的朋友可以了解下
    2021-04-04
  • react中事件处理与柯里化的实现

    react中事件处理与柯里化的实现

    本文主要介绍了react中事件处理与柯里化的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • React Native 加载H5页面的实现方法

    React Native 加载H5页面的实现方法

    这篇文章主要介绍了React Native 加载H5页面的实现方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 使用React实现轮播效果组件示例代码

    使用React实现轮播效果组件示例代码

    React刚出来不久,组件还比较少,不像jquery那样已经有很多现成的插件了,于是自己写了一个基于React的轮播效果组件,现在分享给大家,有需要的可以参考借鉴。
    2016-09-09
  • React实现监听粘贴事件并获取粘贴板中的截图

    React实现监听粘贴事件并获取粘贴板中的截图

    这篇文章主要介绍了React实现监听粘贴事件并获取粘贴板中的截图方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • React Native中实现动态导入的示例代码

    React Native中实现动态导入的示例代码

    随着业务的发展,每一个 React Native 应用的代码数量都在不断增加。作为一个前端想到的方案自然就是动态导入(Dynamic import)了,本文介绍了React Native中实现动态导入的示例代码,需要的可以参考一下
    2022-06-06
  • react+antd树选择下拉框中增加搜索框

    react+antd树选择下拉框中增加搜索框

    这篇文章主要介绍了react+antd树选择下拉框中增加搜索框方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • React使用Mobx6.x共享状态问题

    React使用Mobx6.x共享状态问题

    这篇文章主要介绍了React使用Mobx6.x共享状态问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10

最新评论