【发布时间】:2019-05-14 22:46:57
【问题描述】:
我正在尝试将一些重复的代码提取到 Vue 组件中。我希望能够使用class HTML 属性将 CSS 类列表传递到组件中,并将它们与组件中定义的“默认类”合并。我希望这个组件的公共接口类似于标准的 HTML 元素,但是如果我尝试使用“类”作为道具,Vue 会抛出关于使用 JS 关键字的错误。如果我尝试使用 $attrs,我的默认类会被清除。
是否可以将 HTML 属性与本地组件数据合并,并在我的模板中使用结果?以下是我想要实现的目标:
<template>
<img src="imageUrl" class="classes"
</template>
export default {
computed: {
imageUrl() { return 'urlString' },
},
classes() { return `${this.$attrs.class} default-class` }
}
我希望实现者能够像这样使用我的组件:
<CustomImageComponent class="class-name another-class" />
我希望呈现这个:
<img src="urlString" class="class-name another-class default-class" />
【问题讨论】:
-
我不确定我是否 100% 理解这个问题,但在我看来,您正在寻找
class="my-static-class" :class="my-passed-classes"。它结合了类名中的静态和变量 -
这就是我所追求的,但我想使用 HTML 属性而不是自定义属性。
标签: javascript vue.js