Как компактно вставлять svg с возможностью изменения его свойства?

Для компактной вставки SVG с возможностью изменения его свойств в Vue.js можно воспользоваться следующим подходом:

  1. Использование компонента <component>: Вы можете создать компонент, который будет динамически загружать SVG и применять к нему свойства. Например, создайте компонент SvgIcon:
<template>
  <component :is="icon" :fill="fill" :width="width" :height="height" />
</template>

<script>
export default {
  props: {
    icon: {
      type: String,
      required: true
    },
    fill: {
      type: String,
      default: 'currentColor'
    },
    width: {
      type: [Number, String],
      default: 24
    },
    height: {
      type: [Number, String],
      default: 24
    }
  }
};
</script>
  1. Добавление свойств в SVG файл: Чтобы иметь возможность изменять свойства SVG (например, цвет), добавьте соответствующие атрибуты в самом SVG файле:
<svg width="24" height="24" fill="currentColor">
  <!-- ваше содержимое SVG -->
</svg>
  1. Использование компонента в шаблоне:
<template>
  <SvgIcon icon="path_to_your_svg_file.svg" fill="red" width="32" height="32" />
</template>

<script>
import SvgIcon from '@/components/SvgIcon.vue';

export default {
  components: {
    SvgIcon
  }
};
</script>

Теперь, при использовании компонента SvgIcon, вы сможете динамически изменять такие свойства, как цвет, ширина и высота SVG. Этот подход позволяет вам компактно вставлять SVG с возможностью изменения его свойств в Vue.js.