首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用插槽而不是内联声明会使组件更加灵活吗?

使用插槽而不是内联声明会使组件更加灵活吗?
EN

Stack Overflow用户
提问于 2021-09-27 23:43:08
回答 1查看 33关注 0票数 1

我正在尝试制作一个不太固执己见的网格组件。我有两种不同类型的组件,它们有不同的封面图像,DVDCassette

我认为最好的方法是不像下面这样使用v-if

Parent.vue

代码语言:javascript
复制
<MyUniversalComponent
   :items="items"
>
</MyUniversalComponent>

MyUniversalComponent.vue

代码语言:javascript
复制
import DVD from '@/components/DVD.vue';
import Cassette from '@/components/Cassette.vue';
代码语言:javascript
复制
<template>
    <div class="grid">
       <div v-for="item in items">
           <div v-if="item.type === 'dvd'">
               <DVD :data="item" />
           </div>
           <div v-else-if="item.type === 'cassette'">
               <Cassette :data="item" />
           </div>
       </div>
    </div>
</template>

是否有更灵活的方法来使用插槽来完成这个任务?我希望它是一个"shell“网格,可以以不同的方式使用,所以我假设我想要去掉让这些组件驻留在这里的逻辑。我能把这个翻译成使用插槽吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 02:23:23

在这种情况下,比插槽更合适。它使用一个设置组件类型的is支柱,所有绑定都通过解析的组件传递:

代码语言:javascript
复制
<script>
import DVD from '@/components/DVD.vue';
import Cassette from '@/components/Cassette.vue';

export default {
  components: {
    DVD,
    Cassette,
  }
}
</script>

<template>
    <div class="grid">
       <div v-for="item in items">
           <component :is="item.type" :data="item" />
       </div>
    </div>
</template>

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69354279

复制
相关文章

相似问题

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