我正在try 将一些Vue.js Single File组件从::v-deep
语法迁移到:deep()
,如here所述.然而,我不确定如何让它与nested与&__*
SCSS规则一起工作.没有&__*
的规则运行得很好.
我们使用的SCSS编译器是dart-sass.
Example
例如,拥有以下原始代码段:
::v-deep .wrapper {
display: flex;
&__element {
display: block
}
}
将代码正确编译为
[data-v-S0m3Ha5h] .wrapper__element {
display: block;
}
并抛出一个警告:[@vue/compiler-sfc] ::v-deep usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead.
:deep()
in top-level rule
我try 将其转换为:deep()
,如下所示:
:deep(.wrapper) {
display: flex;
&__element {
display: block
}
}
这会导致编译器错误,因为:deep(wrapper)__element
is not a valid selector.
:deep()
in the nested rule
所以我把:deep
移到了嵌套规则中:
.wrapper {
display: flex;
:deep(&__element) {
display: block
}
}
它编译时没有错误,但生成的是拙劣的css:
.wrapper[data-v-S0m3Ha5h] &__label {/* ... */}
Question
如何使用嵌套的&__*
条规则和:deep()
条规则?