首页 > 解决方案 > 在无渲染组件中检测模板 v-slot

问题描述

我在 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
}

标签: javascriptvue.jsrenderingv-slotrenderless-component

解决方案


推荐阅读