首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Vue3检查插槽是否为空

Vue3检查插槽是否为空
EN

Stack Overflow用户
提问于 2021-06-30 00:58:08
回答 2查看 7.6K关注 0票数 11

是否存在与以下Vue3方法等效的Vue2:

代码语言:javascript
复制
methods: {
   hasSlot(name) {
      return !!this.$slots[name]
   }
}

在Vue3的合成API中?

我试过:

代码语言:javascript
复制
setup({slots}) {
   const hasSlot = (name) => {
      return !!slots[name];
   }

   return { hasSlot }

}

但是它没有返回期望值,因为slots是未定义的(控制台中的每个错误)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-30 20:43:26

正如评论中指出的,罗氏 ( context)包含组件的slots。第一个参数是组件的props

代码语言:javascript
复制
export default {
  setup(props, { slots }) {
    const hasSlot = name => !!slots[name]
    return { hasSlot }
  }
}

演示1

模板中的插槽也是以$slots的形式公开的,因此您可以用$slots[slotName]或仅用$slots.SLOTNAME (例如,$slots.footer)替换hasSlot(slotName)

代码语言:javascript
复制
<template>
  <footer v-if="$slots.footer">
    <h3>footer heading</h3>
    <slot name="footer" />
  </footer>
</template>

演示2

票数 16
EN

Stack Overflow用户

发布于 2022-05-20 08:52:07

现在,在Vue3组合API中,您可以使用useSlots

代码语言:javascript
复制
<script setup>
const slots = useSlots()
const hasSlot = (name) => {
    return !!slots[name];
  }
</script>
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68187278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档