Vue下svg图标打包后不显示的问题

Vue3,用svg文件做图标,开发环境下好好的,打包后图标不能显示。
原来的代码如下:

import svgIds from 'virtual:svg-icons-names'

  // 注册svg图标
  for (const i in svgIds) {
    app.component(svgIds[i], {
      data() {
        return {
          name: '#'+svgIds[i]
        }
      },
      template: `<svg class="icon"><use :xlink:href="name" /></svg>`
    })
  }

在开发环境下正常,打包后不能显示图标。改为如下代码:

import svgIds from 'virtual:svg-icons-names'
import { h } from 'vue'

  // 注册svg图标
  for (const i in svgIds) {
    app.component(svgIds[i], {
      name: svgIds[i],
      render() {
        return h('svg',
          { class: 'icon', 'aria-hidden': 'true'},
          h('use', {href:'#'+svgIds[i]})
        )
      }
    })
  }

将图标组件动态渲染生成,就可以了。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容