vue2 插槽(默认插槽 slot 、具名插槽 v-slot 、作用域插槽 slot-scope -- 插槽传值 )

简介: vue2 插槽(默认插槽 slot 、具名插槽 v-slot 、作用域插槽 slot-scope -- 插槽传值 )

插槽:用于在子组件的指定位置插入指定内容,类似在电梯里挂的若干广告显示屏,可以给指定的位置传入指定的广告

使用场景

多个页面用到同一组件,但展示的内容不一样,如 Tabs(页签), Modal (模态框),Dialog(对话框)等

单插槽(匿名/默认插槽)

父组件中( 此时的 )

        <Child>
            <template>
               <p>身体</p>
            </template>
        </Child>

或( 默认插槽的 template 标签可以省略)

        <Child>
               <p>身体</p>
        </Child>

子组件中

    <div>
        <p>头</p>
        <slot>
        默认内容 (当父组件标签内无内容时,会显示!)
        </slot>
        <p>脚</p>
    </div>

多插槽(具名插槽)

  • 通过 slot 属性或 v-slot 指令(可简写为 # )指定插槽的位置,支持中文。
  • slot 和v-slot 可以用在template标签上(推荐),也可以直接用于 html 标签上。

父组件

<Child>
    <template slot='head'>
    </template>

    <template slot='foot'>
    </template>
</Child>

<Child>
    <template v-slot:head>
    </template>

    <template v-slot:foot>
    </template>
</Child>

<Child>
    <template #head>
    </template>

    <template #foot>
    </template>
</Child>

子组件中

    <div>
        <slot name="head"></slot>
        <p>身体</p>
        <slot name="foot"></slot>
    </div>

最终页面效果

身体

插槽传值(作用域插槽)

子组件可以通过插槽给父组件传值

v-slot 接收参数 (用于 v-slot 指令标记插槽)

子组件中,将变量status动态绑定到slot标签上

    <div>
        <p>头</p>
        <slot  name="body"  :status="status"></slot>
        <p>脚</p>
    </div>
        data(){
            return{
                status:'健康的'
            }
        }

父组件中,通过 v-slot 接收,子组件通过插槽传入的所有变量,都存在slotProps对象中。

        <Child>
            <template v-slot:body="slotProps">
               <p>{{slotProps.status}}身体</p>
            </template>
        </Child>

slot-scope 接收参数 (用于 slot 属性标记插槽)

子组件

<button>
    <slot name="插槽1" :info="info"></slot>
</button>
data() {
    return {
        info: {
            name: '朝阳'
        }
    }
}

父组件,通过slot-scope接收子组件通过插槽传入的值( slot-scope 里的 {} 是进行解构赋值)

<Child>
    <template slot="插槽1" slot-scope="{info}">
        <p>{{info}}</p>
    </template>
</Child>


目录
相关文章
|
7月前
|
JavaScript API
vue插槽slot、slot-scope、v-slot的区别以及嵌套插槽的使用
可以将 slot 理解成一个占位的东西,我们提前在模板中放置一个占位的标记,当其他地方要使用模板时就可以通过标记再传进来具体的内容,这样就可以实现更强的复用能力。
135 2
|
4月前
|
JavaScript
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
这篇文章详细介绍了Vue中的插槽(Slots)概念,包括默认插槽、具名插槽和作用域插槽的用法。通过实际的代码示例和项目结构,文章展示了如何在组件中定义和使用插槽,以及如何通过插槽向组件传递内容和数据。
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】(2022/8/30)
|
4月前
|
JavaScript
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】
这篇文章详细介绍了Vue.js中的插槽概念,包括默认插槽、具名插槽和作用域插槽的使用方式和实际应用示例,通过代码演示了如何在组件中定义和使用插槽来实现内容的灵活替换和展示。
Vue学习之--------插槽【默认插槽、具名插槽、作用域插槽】
|
6月前
|
JavaScript
vue的插槽(slot)
vue的插槽(slot)
|
7月前
|
JavaScript
#是啥,v-slot插槽的区别
#是啥,v-slot插槽的区别
114 1
|
JavaScript
Vue插槽 slot 标签
Vue插槽 slot 标签
133 0
|
JavaScript
【Vue】—解构插槽 Prop以及具名插槽的缩写
【Vue】—解构插槽 Prop以及具名插槽的缩写
|
7月前
|
JavaScript 前端开发
Vue之插槽Slot理解
Vue之插槽Slot理解
43 0
|
7月前
|
JavaScript
对于Vue Slot插槽的讲解
对于Vue Slot插槽的讲解
【Vue2.0】—默认插槽、具名插槽、作用域插槽(二十四)
【Vue2.0】—默认插槽、具名插槽、作用域插槽(二十四)
下一篇
DataWorks