UI Design System
build dev

QRCode

将内容编码为二维码。中文惯用名:二维码。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.qrcode
名称QRCode
二级分类数据展示(data-display)
用途将内容编码为二维码
描述中文惯用名:二维码。

预览

静态结构:QRCode 以 qrcode 包在 effect 中生成内联 SVG(toString(value, { type: "svg", margin: 0 })),自生成的可信 SVG 字符串经 dangerouslySetInnerHTML 注入容器,容器按 size(缺省 128px)定宽高;bordered 时外层加圆角边框与内边距。value 为空或生成失败时渲染同尺寸灰色占位块 + image 图标。color / bgColor 经 hex 校验(# 开头的 3 / 4 / 6 / 8 位,可带透明度位)后透传为码体 dark / light 色,非法值回退生成库内建黑 / 白默认。

DSL 结构

DslNode
{
  "type": "QRCode",
  "props": {
    "value": "https://pactor.example.com/invite/8f2k",
    "size": 128,
    "bordered": true
  }
}

何时用

何时使用

  • 将短文本编码为可扫码图形:分享链接、下载地址、登录凭证、凭证编号。
  • 移动端接力场景:桌面端展示二维码,手机扫码继续流程。
  • 需要控制码体尺寸、配色与边框的嵌入式展示。

何时不用

  • 承载长文或复杂结构化数据:二维码容量有限且不可读,长内容用链接承接。
  • 需要用户直接阅读 / 复制内容:二维码不替代文本,应同时给出原文。
  • 展示条形码等其他码制:QRCode 仅生成 QR 码。

变体

变体视觉形态适用场景
默认128px 黑码白底内联 SVG常规分享 / 跳转编码
bordered 带边框圆角边框 + 内边距独立展示的码块,与白底内容区区分
自定义尺寸size 控制边长(px)卡片角标小码或海报级大码
自定义配色color / bgColor(hex,可带透明度位)品牌色码体;需保证扫码对比度
占位态同尺寸灰底占位块 + 图标value 为空或生成失败

API 属性

属性类型默认值说明
valuestring—编码内容;为空时渲染占位块
sizenumber128尺寸(px),同时约束 SVG 容器与占位块
colorstring—码体颜色:仅接受 # 开头 hex(3 / 4 / 6 / 8 位,可带透明度位),非法值回退生成库内建黑色
bgColorstring—背景色:格式同 color,非法值回退生成库内建白色
borderedbooleanfalse带边框与内边距
classNamestring—通用:根节点 class(与内置样式合并)
styleCSSProperties—通用:根节点内联样式

使用规范

  • value 保持短小(链接 / 编号级),内容越长码点越密,过小尺寸下难以识别;size 与内容长度匹配。
  • 安全要求:二维码旁必须展示编码后的真实目标(如完整链接文本),用户跳转前可核对;不展示「只码无文」的不可核验入口。
  • 自定义 color / bgColor 必须保持深浅对比(码深底浅),低对比或反色组合会导致扫码失败;非法 hex 静默回退默认色,配置后应确认生效。
  • 二维码不替代可复制文本:重要链接同时提供文本与复制入口。
  • value 动态变化时组件自动重新生成;空 value 期间呈现占位块,避免闪现错误码。

正例

  • ✓ 分享弹层:value 传分享链接,码下方附链接文本与「复制链接」按钮,bordered 独立成块。
  • ✓ 移动端接力:详情页侧栏 size={96} 小码,文案提示「扫码在手机上继续」。
  • ✓ 品牌活动页:color 传品牌主色 hex、bgColor 留白,实测扫码可用后上线。

反例

  • ✕ 只展示二维码不给出编码目标文本,用户无法核对跳转去向(违反安全要求)。
  • ✕ 把整段长文 / JSON 编码进 QRCode,码点过密无法识别。
  • ✕ 用低对比配色(浅色码浅底)或 rgb() 等非 hex 值配置颜色(非法值会被回退)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。