Skip to content

SVG 与 Fragment

SVG

支持 SVG 原生标签以及 xlinkHref → xlink:href 映射。

Fragment

Vue 2 没有与 Vue 3 相同的根 Fragment 语义:

  • fragment: 'error':默认报错,要求显式包裹根节点。
  • fragment: 'array':转换为 VNode 数组,适合 children 等能够接收数组的位置。

Demo 在普通元素 children 中使用 Fragment:

tsx
import Vue from 'vue'

export default Vue.extend({
  name: 'SvgFragmentDemo',
  data: () => ({ iconId: '#demo-check' }),
  render(this: any) {
    return (
      <article class="demo-card">
        <span class="case-label">SVG / xlink / Fragment</span>
        <h3>SVG 与嵌套 Fragment 数组</h3>
        <svg width="0" height="0" aria-hidden="true">
          <symbol id="demo-check" viewBox="0 0 24 24">
            <path d="M5 12l4 4L19 6" fill="none" stroke="currentColor" stroke-width="2" />
          </symbol>
        </svg>
        <div class="fragment-row">
          <>
            <svg class="demo-icon" viewBox="0 0 24 24"><use xlinkHref={this.iconId} /></svg>
            <span>Fragment child A</span>
            <span>Fragment child B</span>
          </>
        </div>
      </article>
    )
  }
})

基于 Oxc Parser 的 Vue 2.7 JSX/TSX 转换器