我在 VueJS 中完成了一个无渲染组件,我尝试检测组件内部是否有一个带有 v-slot 的模板。目标是在下面的无渲染组件“Read”内有条件地渲染代码。例如,我需要的是,在第一种情况下,btn 被渲染是因为他有一个插槽,而在第二种情况下,btn 没有显示,因为没有带有 v-slot 的模板。
情况1
<Read code="myCode">
<template v-slot="{can}">
{{ can }}
<v-btn>
Reading button
</v-btn>
</template>
</Read>
案例2
<Read code="myCode">
<v-btn>
Reading button
</v-btn>
</Read>
我试图在我的无渲染组件中查看 this.$attrs 或 this.$children,但我没有找到如何实现这一点。我知道我需要在我的无渲染组件的渲染方法中添加一个“if”,例如
render () {
return haveTemplate ? this.$scopedSlots.default({
can: this.can,
error: this.error
}) : null
}