Vue3—插槽solt

默认插槽

父组件

        <Sidebar>
            <div>
                {{ strData }}
            </div>
        </Sidebar>
let strData = ref('我是你爸爸真伟大,养你这么大');//定义插槽数据

子组件

 <slot>没有数据,我先默认显示一下 loading。。。。。。。</slot>

父组件提供的内容会覆盖子组件的默认内容。
若父组件未提供具名插槽内容,子组件的默认内容将被渲染。

具名插槽

子组件

        <slot name="title"></slot>
        <slot name="strslot">没有数据,我先默认显示一下 loading。。。。。。。</slot>
        //给插槽取两个名字 title strslot

父组件

        <Sidebar>
            <template v-slot:title>
                <span>{{title}}</span>
            </template>
            <template v-slot:strsolt>
                <div>
                    {{ strData }}
                </div>
            </template>
        </Sidebar>
        //简写
        <Sidebar>
            <template #title>
                <span>{{title}}</span>
            </template>
            <template #strslot>
                <div>
                    {{ strData }}
                </div>
            </template>
        </Sidebar>
let strData = ref('我是你爸爸真伟大,养你这么大');//定义插槽数据
let title = ref('我是slot的标题');

简写:
#header 等价于 v-slot:header。# 缩写只能在 标签上使用,若直接在组件上使用 v-slot,则不能使用缩写。
通过 name 属性指定插槽名称。
将子组件已经取好的插槽名在父组件
使组件结构更灵活,适用于多种场景。
语法:
子组件用 定义,父组件用 <template #xxx> 使用。
作用:
允许父组件将内容精确分发到子组件的不同位置。
适用场景:
布局组件、模态框、表格等需要灵活内容结构的组件。

通过具名插槽,组件可以更灵活地复用,同时保持清晰的结构和数据流向。

作用域插槽

子组件

        <slot name="title"></slot>
        <slot name="strslot" :childData="sendData">没有数据,我先默认显示一下 loading。。。。。。。</slot>
        //script
let sendData = ref('这是儿子给父亲最后的一点温柔了');

父组件

        <Sidebar>
            <template #title>
                <div>
                    {{ title }}
                </div>
            </template>
            <template #strslot="{ childData }">
                <div>
                    {{ strData }}
                </div>
                <span>
                    {{ childData }}
                </span>
            </template>
        </Sidebar>

作用:
允许子组件向父组件传递数据,使父组件能够动态自定义子组件的渲染内容。
突破数据单向流动限制:子组件可向父组件回传数据,父组件基于这些数据自定义渲染逻辑。
增强组件复用性:子组件提供 “渲染接口”,父组件通过插槽自定义具体实现。
数据来源:
子组件向父组件传递动态数据
灵活性:
高(内容可根据子组件数据变化)
语法:
传递数据

<!-- 完整语法 -->
<template v-slot:item="{ item }">...</template>

<!-- 缩写语法 -->
<template #item="{ item }">...</template>

适用场景:
列表 / 表格组件、通用布局组件、需要动态内容的组件。
默认插槽对比:
普通插槽内容由父组件静态定义,作用域插槽内容动态依赖子组件数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值