10分钟搞定react二维码、条码生成组件

条码生成

首先去万能的 npm 上找到一个库安装。


npm install jsbarcode --save

然后写一个简单的 react 组件。需要转换成条码的原始字符串来源可能有很多,我们在这里就弄个输入框好了。

输入 => 转换 => SVG条形码

import React from 'react';
import JsBarcode from 'jsbarcode';

class CodePainterExample extends React.Component {
  constructor(props) {
    super(props);
  }

  render() {
    return (
      <div>
        <input type="text" placeholder="请输入原始字符串" 
          onChange={(e)=>{
            //  在 this._barcodeSVG 下使用输入的数值来生成条码
            JsBarcode(this._barcodeSVG, e.target.value, 
              {
                displayValue: false,  //  不显示原始值
                background: '#4b8b7f',  //  背景色
                lineColor: 'rgba(255,255,255,0.5)', // 线条颜色
                width: 1  // 线条宽度
              }
            );
          }}/>
        <br/>
        <label>条码</label><br/>
        <svg ref={(ref)=>this._barcodeSVG = ref}></svg>
      </div>
    );
  }
}

export default CodePainterExample;

二维码生成

一样在 npm 找到库 qr-image 安装。
npm install --save qr-image

同样,在上面的例子里加一个新的 svg 标签,来放我们的二维码。由于这个库主要是用在 nodejs 中,我们使用其中提供的 svgObject.path 来绘制二维码。

import svgpath from 'svgpath';
import qr from 'qr-image';
class CodePainterExample extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      path: null // 保存二维码SVG的path
    };
  }
  render() {
    return (
      <div>
        <input type="text" placeholder="请输入" 
          onChange={(e)=>{
            const originPath = qr.svgObject(e.target.value).path; //  获得二维码的绘制路径
            this.setState({path: originPath});
          }}/>
        <br/>
        <label>二维码</label><br/>
        <svg width="100%" height="300" ref={(ref)=>this._qrcodeSVG = ref} transform="scale(2)">
          <path d={this.state.path?this.state.path:null}/>
        </svg>
      </div>
    );
  }
}

这样生成的二维码图形意外的小,还得找个库来放大一下我们的二维码。
npm install --save svgpath
然后,试着放大一下我们的二维码。

const scaledPath = svgpath(originPath).scale(5, 5).toString();
this.setState({path: scaledPath});

完美。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 无风无浪 不疼不痒 温水煮青蛙 能力实力 机遇机缘 野心渐长野性渐灭 庸人自扰,又何必 亟不可待,引路人
    咸极咸阅读 169评论 0 0
  • 最近两期康熙来了主打回顾牌,请来了曾经参与过节目现在已经离开人世的嘉宾们的亲朋好友回忆他们的故事。一边做节目一边看...
    0plus1阅读 135评论 0 0