最近在写二维码的时候,突然想起之前项目中遇到的一个问题。这个问题网上没有答案。我想你也许也会遇到这种问题。我就记录在这里。希望对您有所帮助。如果您不喜欢它,请不要抱怨。 qrcode配合canvas在本地生成二维码时,首次可以正常显示。底部会有一个贴纸。出码
跨页后显示异常
一开始有点头疼,因为控制台一切正常,没有抛出错误,然后看qrcode的参数属性也没有问题。我需要生成多个页面的二维码,封装了qrcode组件
F12逐步检查html结构,生成多个二维码后不被破坏
所以首先想到的可能是覆盖问题。不知道为什么关闭窗口后没有销毁,所以手动remove()销毁即可。结果依然悲惨,依然没有效果。您可以通过打印结果来获取它。我知道二维码正常生成但是没有渲染
难道是当前页面的id和其他页面的id跨页面重复,导致qrcode成功生成二维码但canvas无法正常显示?那么只有每个引用qrcode组件的页面需要传递一个唯一的ID过来制作即可。抱着试一试的态度,我再次打开vscode,把父组件的名字传了过去
父组件
子组件 ID
然后就可以通过nameOn生成二维码了,非常好用
<el-table-column :标签="$t('receipt.orderQRCode')" header-align=“中心” 对齐=“中心” 最小宽度=“150”> <模板 插槽范围="范围"> <el-button type="primary" @click="createORCode(scope.row.receiptOrder)"> {{$t('receipt.generateQRcode')}} el按钮>模板> el-表格列>
:orderNumber="orderNumber":nameOn="this.$www.sychzs.cn"ref="codeDialog"@confirm="createORCode">/** * 生成二维码 */ createORCode (订单号) { 这个.codeDialogVisible = true 这个.orderNumber = orderNumber 这个.$nextTick(() => { 这个.$refs.codeDialog.init() }) },qrcode公共组件
对话框 宽度=“400px” :title="$t('receipt.viewQRCode')" :关闭-on-click-modal =“假”:visible.sync="可见" @close="visible = false" :append-to-body="true" > {{ $t("收据.单据号") + ":" + 订单号 }}