vue3中把封装svg图标为全局组件

在vue3中我们使用svg图标是下面这样子的

vue 复制代码
    <svg style="width:30px;height:30px;">
      <use xlink:href="#icon-phone" fill="red"></use>
    </svg>

第次使用图标都要写这么多重复的代码,很不方便,所以,如果我们把它封装成全局的组件, 就可以很方便的使用了

首先我们要看 svg 图标使用时 变化的部分有哪几个

所以我们新建一个组件 SvgIcon

SvgIcon.vue 的代码如下

.vue 复制代码
<script setup lang="ts" name="SvgIcon">
  let props = defineProps({
    iconname: {
      type: String,
      default: '',
    },
    width: {
      type: [Number,String],
      default: 16,
    },
    height: {
      type: [Number,String],
      default: 16,
    },
    color:{
      type:String,
      default:'#666'
    }
  })
</script>

<template>
  <div class="wrapper">
    <svg :style="{width:width+'px',height:height+'px'}">
      <use :xlink:href="`#icon-${iconname}`" :fill="color"/>
    </svg>
  </div>
</template>

<style scoped>

</style>

在页面中调用就可以了


以上是在单组件中调用, 每次使用 都要引入才可以使用,我们现在把它设置成全局组件,就不需要 每个调用的地方都要 import SvgIcon from "@/components/SvgIcon.vue";

我们只需要在 main.ts中注册自定义的组件为全局组件就可以了

相关推荐
懒大王爱吃狼1 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
待磨的钝刨2 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
逐·風5 小时前
unity关于自定义渲染、内存管理、性能调优、复杂物理模拟、并行计算以及插件开发
前端·unity·c#
Devil枫5 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
尚梦6 小时前
uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
前端·小程序·uni-app
GIS程序媛—椰子6 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山7 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js
毕业设计制作和分享7 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
程序媛小果7 小时前
基于java+SpringBoot+Vue的旅游管理系统设计与实现
java·vue.js·spring boot
从兄8 小时前
vue 使用docx-preview 预览替换文档内的特定变量
javascript·vue.js·ecmascript