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>


目录
相关文章
|
JavaScript API
vue插槽slot、slot-scope、v-slot的区别以及嵌套插槽的使用
可以将 slot 理解成一个占位的东西,我们提前在模板中放置一个占位的标记,当其他地方要使用模板时就可以通过标记再传进来具体的内容,这样就可以实现更强的复用能力。
|
缓存 JavaScript
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
vue使用keep-alive实现页面前进刷新,后退缓存,完美运行无bug
2224 122
vue2 自定义 v-model (model选项的使用)
vue2 自定义 v-model (model选项的使用)
2082 1
|
JSON JavaScript 定位技术
Echarts 绘制地图(中国、省市、区县),保姆级教程!
Echarts 绘制地图(中国、省市、区县),保姆级教程!
29757 154
|
缓存 JavaScript Java
vue2知识点:组件的props属性、非props属性、props属性校验
vue2知识点:组件的props属性、非props属性、props属性校验
676 4
elementUI使用Pagination分页组件增加自定义slot
本文介绍了如何在Element UI的Pagination分页组件中使用自定义slot。通过在`el-pagination`标签内的适当位置添加slot内容,可以在分页组件中插入自定义的HTML或组件。文章提供了一个示例代码,展示了如何添加两个自定义slot,并展示了最终效果。
2493 4
elementUI使用Pagination分页组件增加自定义slot
|
JavaScript
Vue2.0、Vue3.0分别使用v-model封装组件[Vue必会]
本文介绍了在Vue 2和Vue 3中如何使用`v-model`来实现组件间的双向数据绑定,包括在Vue 2中使用`value`和`input`事件,以及在Vue 3中使用`modelValue`和`update:modelValue`事件的方法。
1432 22
|
前端开发 JavaScript
如何在 JavaScript 中访问和修改 CSS 变量?
【10月更文挑战第28天】通过以上方法,可以在JavaScript中灵活地访问和修改CSS变量,从而实现根据用户交互、页面状态等动态地改变页面样式,为网页添加更多的交互性和动态效果。在实际应用中,可以根据具体的需求和场景选择合适的方法来操作CSS变量。
832 12
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
640 2

热门文章

最新文章