2022-10-09 工作记录--React-实现二维码的两种方法

React-实现二维码的两种方法

一、方法一

1、实现效果

请添加图片描述

2、实现方法
第一步、安装qrcode

npm i qrcode

或者

yarn add qrcode

第二步、检查qrcode是否安装成功

检查package.json里是否存在qrcode,举例如下:

在这里插入图片描述

第三步、在utils里新建文件qrcode.js
import QRCode from 'qrcode'

export async function getQRCode(url) {
  const _myQRCode = await QRCode.toDataURL(url)
  return _myQRCode
}
第四步、运用

在这里插入图片描述
posterPop.jsx

import React,{Component} from 'react';
import { getQRCode } from "@src/utils/qrcode"; // 引入getQRCode创建二维码
import './posterPop.less';

class PosterPop extends Component {

  state = {
    qrcodeUrl: '', // 二维码图片地址
  }

  componentDidMount() {
    this.createQRCode(); // 创建二维码
  }

  // 创建二维码
  createQRCode = async () => {
  	/** 下面两行代码(避开注释行)是我项目所需,小萝卜儿们根据自己需求进行更改哦~,其实就是二维码滴跳转地址喔 */
    // 区分 测试环境 和 线上测试环境/正式环境 的 appKey值
    const appKey = location.origin.includes("duibatest") ? '123' : '456';
    // qrcodeUrl为扫描二维码后的对应跳转地址,landingPageUrl为分享落地页地址(openBs写法,去烽火台复制)【即 扫描二维码后 进入 分享落地页】
    const landingPageUrl = location.origin + '/projectx/' + CFG.projectId + '/landingPage.html?appKey=' + appKey + '&openBs=openbs&appID=' + CFG.appID;    
    
    const qrcodeUrl = await getQRCode(landingPageUrl);
    console.info('二维码图片地址: ' + qrcodeUrl);
    this.setState({
      qrcodeUrl
    });
  }

  render() {
    return (
      <div className="posterPop">
        {/* 二维码 */}
        <img className="qrcode" src={this.state.qrcodeUrl} />
      </div>
    );
  }
}
export default PosterPop;

posterPop.less

/** 根据自己需求进行编写 */
.qrcode {
    width: 124px;
    height: 124px;
    left: 438px;
    top: 876px;
    position: absolute;
    border-radius: 10px;
}

二、方法二

1、实现效果

在这里插入图片描述

2、实现方法
第一步、安装qrcode.react

npm i qrcode.react

或者

yarn add qrcode.react

第二步、检查qrcode.react是否安装成功

检查package.json里是否存在qrcode.react,举例如下:

在这里插入图片描述

第三步、运用

在这里插入图片描述

posterPop.jsx

import React from 'react';
import QRCode from "qrcode.react"; // 引入二维码
import './posterPop.less';

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

    this.state = {
      qrcodeUrl: '', // 二维码图片地址
    }
  }

  render() {
    const { qrcodeUrl } = this.state;
    return (
      <div className="posterPop">
        {/* 二维码 */}
        <QRCode
          className="qrcode"
          value={qrcodeUrl}
          size={57.5} // 二维码图片大小(宽高115px)
          bgColor="#fff1d1" // 二维码背景颜色
          fgColor="#c7594a" // 二维码图案颜色
        />
      </div>
    );
  }
}
export default PosterPop;

posterPop.less

.pop_poster {
  width: 750px;
  height: 1189px;
  left: 0px;
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
  /** 二维码 */
  .qrcode {
    left: 468px;
    top: 826px;
    position: absolute;
  }
}

请添加图片描述

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小呀小萝卜儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值