SvgIcon.vue 873 字节
<template>
  <svg :class="svgClass" aria-hidden="true">
    <use :xlink:href="getIconName" rel="external nofollow"></use>
  </svg>
</template>
<script>
export default {
  name: 'svg-icon',
  props: {
    iconName: {
      type: String,
      required: true
    },
    className: {
      type: String,
      default: ''
    },
    // 颜色值
    color: {
      type: String,
      default: "#dddddd"
    }
  },
  computed: {   // 计算属性
    getIconName () {
      return `#ic_${this.iconName}`;
    },
    svgClass () {
      return this.className && /\S/.test(this.className) ? `${this.className} svg-icon` : 'svg-icon';
    },
    style () {
      return { "--color": this.color };
    }
  }
};
</script>
<style scoped>
.svg-icon {
  width: 20px;
  height: 20px;
  fill: currentColor;
  overflow: hidden;
  color: var(--color);
  vertical-align: middle;
}
</style>