【发布时间】:2018-02-04 12:50:19
【问题描述】:
VueJS 上的 docs 声明 scoped 应该限制组件的样式。但是,如果我创建 2 个具有相同 baz 样式的组件,它将从一个组件泄漏到另一个组件:
foo.vue
<template>
<div class="baz">
<Bar></Bar>
</div>
</template>
<style scoped>
.baz {
color: red;
}
</style>
bar.vue
<template>
<div class="baz">bar</div>
</template>
<style scoped>
.baz {
background-color: blue;
}
</style>
我希望baz 在两个组件中会有所不同。但是生成网页后,我可以看到蓝色背景上的红色文本,这意味着foo 的作用域样式影响了bar 组件。生成的代码如下所示:
<div class="baz" data-v-ca22f368>
<div class="baz" data-v-a0c7f1ce data-v-ca22f368>
bar
</div>
</div>
如您所见,“泄漏”是 VueJS 通过在 bar 组件中指定两个数据属性有意生成的。但为什么呢?
【问题讨论】:
-
这可能是一种特殊情况,因为这两个组件是嵌套的。不过,不知道它是否属于错误。