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 前端开发
JS之url进行编码和解码(三种方式)
JS之url进行编码和解码(三种方式)
20320 2
vue2 自定义 v-model (model选项的使用)
vue2 自定义 v-model (model选项的使用)
1948 1
|
JSON 前端开发 JavaScript
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
该文章提供了Webpack的基础入门指南,涵盖安装配置、基本使用、加载器(Loaders)、插件(Plugins)的应用,以及如何通过Webpack优化前端项目的打包构建流程。
不会webpack的前端可能是捡来的,万字总结webpack的超入门核心知识
|
缓存 JavaScript Java
vue2知识点:组件的props属性、非props属性、props属性校验
vue2知识点:组件的props属性、非props属性、props属性校验
515 4
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
缓存 JavaScript 前端开发
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
这篇文章主要介绍了Vue Router的高级用法,包括动态路由、路由懒加载、嵌套路由、路由参数传递、导航守卫以及keep-alive的使用。
922 0
vue-router学习二:动态路由(路由传递数据的一种方式),路由懒加载,嵌套路由,路由传递参数方式,导航守卫,keep-alive标签
echarts的xAxis和yAxis——x轴y轴以及网格线的详细配置
echarts的xAxis和yAxis——x轴y轴以及网格线的详细配置
7065 0
|
JavaScript 测试技术
vue配置生产环境.env.production、测试环境.env.development
该文章介绍了如何在Vue项目中配置和使用不同的环境变量文件(.env、.env.production、.env.development)以适应开发、测试和生产环境,并通过修改`package.json`中的scripts来实现不同环境的打包。
4298 0
vue配置生产环境.env.production、测试环境.env.development