Я не могу придумать элегантный способ сделать это.Если вы используете отдельные файловые компоненты (SFC), вы можете использовать CSS-модули .Из документации vue-loader
..
В одном компоненте *.vue
может быть несколько тегов <style>
.Чтобы внедренные стили не перезаписывали друг друга, вы можете настроить имя внедренного вычисляемого свойства, задав атрибуту модуля значение
<style module="a">
/* identifiers injected as a */
</style>
<style module="b">
/* identifiers injected as b */
</style>
Таким образом, у вас может быть тег стиля для вашего общего стиля,и другие теги стиля для стиля темы.Затем вы можете решить, из какого модуля / стиля-тега будет выбран класс с помощью вычисляемого свойства, которое использует вашу логику для возврата имени модуля.