我想做一件常见的事情-在Vue Nuxt应用程序中动态包含一个svg HTML,我将能够样式化。为此,我创建了一个组件,但不是图像,我得到了一个文本 *data:image/svg+xhtml... *。
如何让它工作?
<template>
<div v-html="src"></div>
</template>
<script>
export default {
name: 'Icon',
props: {
name: {
type: String,
required: true
}
},
computed: {
src() {
const src = require(`assets/icons/${this.name}.svg`)
return src
}
}
}
</script>
3条答案
按热度按时间6psbrbz91#
看起来
@nuxtjs/svg
可以完成你想做的事情。安装后,尝试:ipakzgxi2#
尝试这样做,注意**"/_nuxt/assets”**扩展。
093gszye3#
这并不容易,我尝试了一堆不同的解决方案,“似乎”他们应该工作。
我的理解是,它归结为Webpack如何处理“图像”资产,以及如何使用它们内联与独立的排序改变了定义。
我有一个SVG图标库,需要代码访问(例如在运行时更改颜色),所以我必须内联SVG。
创建一个新的组件,并为SVG名称添加一个propslot。在该组件中,将所有SVG作为代码添加进去。将每个SVG Package 在一个v-if中。
然后通过在槽中填充所需的名称来使用组件