前端架构vue架构插槽slot使用教程

 更新时间:2022年02月19日 16:59:23   作者:悟世君子  
这篇文章主要为大家介绍了前端vue架构插槽slot使用教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

1、直接使用

新建组件 Article

<template>
    <div>
        日期:2022-01-15
        <slot></slot>
    </div>
</template>

新建 Learn,并在 Learn 中使用 Article

Learn.vue 和 Article.vue 在同一文件夹下

<template>
    <div>
        <Article>
            <div>送郎八月到扬州,长夜孤眠在画楼。女子拆开不成好,秋心合着却成愁</div>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

slot 相当于把 div 插入到 Article 中 slot 位置

运行效果

2、设置默认值

即使用 slot 时,不传入会显示默认的内容,传入则使用传入的内容

如不设置默认值,则不显示任何内容,代码如下

先看不设置默认值的情况

Article 内容

<template>
    <div>
        日期:2022-01-15
        <slot></slot>
    </div>
</template>

Learn 内容

<template>
    <div>
        <Article>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

运行效果

设置默认值

Article 内容

<template>
    <div>
        日期:2022-01-15
        <slot>
            <div>醉眠芳树下,半被落花埋</div>
        </slot>
    </div>
</template>

Learn 内容

<template>
    <div>
        <Article>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

运行效果

3、多个 slot 用法

 Article 内容

<template>
    <div>
        <slot name="title"></slot>
        日期:2022-01-15
        <slot name="content"></slot>
    </div>
</template>

Learn 内容

<template>
    <div>
        <Article>
            <template v-slot:title>
                <div>窗前 【作者】赵崇嶓 </div>
            </template>    
            <template v-slot:content>
                <div>
                    窗前寻丈地,种得一株梅。
                    明月清风我,红尘不复来。
                </div>
            </template>
            
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

通过给 slot 标签设置 name 属性值,并通过 v-slot 来对应

运行效果

v-slot:title 可以简写为 #title,代码如下

<template>
    <div>
        <Article>
            <template #title>
                <div>窗前 【作者】赵崇嶓 </div>
            </template>    
            <template #content>
                <div>
                    窗前寻丈地,种得一株梅。
                    明月清风我,红尘不复来。
                </div>
            </template>
            
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

4、作用域插槽

父级插槽使用子组件中的数据

Article 内容

<template>
    <div>
        日期:2022-01-15
        <slot v-bind:article="article">
            <div>{{article.content1}}</div>
        </slot>
    </div>
</template>
<script>
export default {
    data() {
        return {
            article: {
                content1: '从别后,忆相逢。几回魂梦与君同',
                content2: '今宵剩把银釭照,犹恐相逢是梦中'  
            }
        }
    }
}
</script>

Learn 内容

<template>
    <div>
        <Article>
        </Article>
        
        <Article>
            <template v-slot:default="slotProps">
                {{ slotProps.article.content2 }}
            </template>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

运行效果

看上下2个 Article 显示的区别,上边显示的是 content1,下边显示的是 content2

上面代码 v-slot:default="slotProps" 可以简写成 v-slot="slotProps"

简写后的代码

<template>
    <div>
        <Article>
        </Article>
 
        <Article>
            <template v-slot="slotProps">
                {{ slotProps.article.content2 }}
            </template>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

解构插槽 Prop

在支持的环境下 (单文件组件或现代浏览器),可以使用 ES2015 解构传入具体的插槽 prop

代码如下

<template>
    <div>
        <Article>
        </Article>
 
        <Article>
            <template v-slot="{article}">
                {{ article.content2 }}
            </template>
        </Article>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article}
}
</script>

5、动态插槽名

Article 内容

<template>
    <div>
        <slot name="title"></slot>
        日期:2022-01-15
        <slot name="content"></slot>
    </div>
</template>

Learn 内容

<template>
    <div>
        <Article>
            <template v-slot:[dynamicSlotName]>
                <div>身无彩凤双飞翼,心有灵犀一点通</div>
            </template>
        </Article>
        <button @click="changeSlotName">改变插槽名</button>
    </div>
</template>
<script>
import Article from './Article.vue'
export default {
    components: {Article},
    data() {
        return {
            dynamicSlotName: 'title'
        }
    },
    methods: {
        changeSlotName() {
            this.dynamicSlotName = 'content'
        }
    }
}
</script>

运行效果

以上就是前端架构vue架构插槽slot使用教程的详细内容,更多关于vue插槽slot教程的资料请关注脚本之家其它相关文章!

相关文章

  • 关于Pinia状态管理解读

    关于Pinia状态管理解读

    这篇文章主要介绍了Pinia状态管理解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Vue中watch的多种使用方法小结

    Vue中watch的多种使用方法小结

    Vue的watch选项提供了多种方法来观测数据属性的变化,让我们能够编写更加优雅和维护性更高的代码,本文给大家介绍Vue中watch的多种使用方法小结,感兴趣的朋友一起看看吧
    2023-10-10
  • vue实现移动端可拖拽式icon图标

    vue实现移动端可拖拽式icon图标

    这篇文章主要为大家详细介绍了vue实现移动端可拖拽式icon图标,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • vue3实现父组件提交校验多个子组件

    vue3实现父组件提交校验多个子组件

    这篇文章主要为大家详细介绍了vue3如何实现父组件在提交事件中校验多个子组件中的form件,文中的示例代码讲解详细,有需要的小伙伴可以参考一下
    2023-11-11
  • vue左右侧联动滚动的实现代码

    vue左右侧联动滚动的实现代码

    这篇文章主要介绍了vue左右侧联动滚动的实现代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • vue-router配合ElementUI实现导航的实例

    vue-router配合ElementUI实现导航的实例

    下面小编就为大家分享一篇vue-router配合ElementUI实现导航的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Element Breadcrumb 面包屑的使用方法

    Element Breadcrumb 面包屑的使用方法

    这篇文章主要介绍了Element Breadcrumb 面包屑的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue实现flv格式视频播放效果

    vue实现flv格式视频播放效果

    这篇文章主要介绍了vue实现flv格式视频播放,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Vue中使用addEventListener添加事件、removeEventListener移除事件的示例详解

    Vue中使用addEventListener添加事件、removeEventListener移除事件的示例详解

    最近在项目中需要用到addEventListener监听滚动条滚动的高度,所以就研究了一下在vue中是怎么进行事件监听的,添加事件和移除事件结合示例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-12-12
  • vue3更新的setup语法糖实例详解

    vue3更新的setup语法糖实例详解

    vue3上线已经很久了,许多小伙伴应该都已经使用过vue3了,下面这篇文章主要给大家介绍了关于vue3更新的setup语法糖的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04

最新评论