我在使用vue的插槽时,发现一个问题。
我先将提供插槽的组件叫做父组件,向父组件的插槽插入内容的组件叫做子组件。
父子组件我都对style标签使用了scoped标记,按理来说,父子组件是不同的.vue文件,使用scoped后,两个组件中的同名class应该不会相互影响。
但事实并非如此,查看dom结构也可以看到,子组件中的标签有两个“data-v-”属性,其中有一个和父组件相等,这表明父组件中和子组件同名的class会污染子组件的渲染!
这是怎么回事,翻遍了官方文档,没有对这个问题有任何特殊的描述。但它看起来确实没有到达scoped属性预期的工作效果。
从 vue-loader 9.x 开始,父组件的 scoped 样式会作用在 slot 里的内容上。详情见 https://github.com/vuejs/vue-...。翻了下文档好像的确没有提起这件事,你可以在那个 issue 下面评论建议他们把这条加到文档里去