前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Vue 插槽(slot)使用

Vue 插槽(slot)使用

原创
作者头像
有勇气的牛排
发布于 2023-06-25 15:27:26
发布于 2023-06-25 15:27:26
1830
举报

1 为什么使用slot

组件的插槽

  • 组件的插槽是为了让我们封装的组件更加具有扩展性。
  • 让使用者可以决定组件内部一些内容到底展示了什么。

举例:

  • 移动开发中,几乎每个页面都有导航栏
  • 导航栏我们会分装成一个插件,比如nav-bar组件
  • 一旦有了这个组件,我们就可以在多个页面中复用了
代码语言:html
AI代码解释
复制
<!--
1. 插槽的基本使用 <slot></slot>
2.插槽的默认值:<slot>button</slot>
3.如果有多个值,同时放入到组件进行替换时,一起作为替换元素
-->

<div id="app">
    <cpn><button>按钮</button></cpn>
    <cpn></cpn>
    <cpn><span>标签</span></cpn>
</div>

<template id="cpn">
    <div>
        <h2>我是组件</h2>
        <p>666</p>
        <slot><button>默认为按钮</button></slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn'
      }
    }
  })
</script>

2 具名插槽使用(导航)

代码语言:html
AI代码解释
复制
<div id="app">
    <cpn><span slot="center">标题</span></cpn>
    <cpn><button slot="center">标题</button></cpn>
</div>

<template id="cpn">
    <div>
        <slot name="left"><span>左边</span></slot>
        <slot name="center"><span>中间</span></slot>
        <slot name="right"><span>右边</span></slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn'
      }
    }
  })
</script>
具名插槽使用(导航)
具名插槽使用(导航)

3 作用域插槽

  • 父组件替换插槽的标签,但是内容由子组件来提供
代码语言:html
AI代码解释
复制
<div id="app">
    <cpn></cpn>

    <cpn>
        <!-- 目的是获取子组件中的pLanguages -->
        <template v-slot="slot">
            <span v-for="item in slot.data">{{ item }} * </span>
        </template>
    </cpn>

    <cpn>
        <!-- 目的是获取子组件中的pLanguages -->
        <!-- .join 将数组,转为字符串 -->
        <template v-slot="slot">
            <span>{{ slot.data.join(' * ') }}</span>
        </template>
    </cpn>

</div>

<template id="cpn">
    <div>
        <slot :data="pLanguages">
            <ul>
                <li v-for="item in pLanguages">{{ item }}</li>
            </ul>
        </slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn',
        data() {
          return {
            pLanguages: ['JavaScript', 'C++', 'Java', 'C#', 'Python']
          }
        }
      }
    }
  })
</script>

仓库地址:## 1 为什么使用slot

组件的插槽

  • 组件的插槽是为了让我们封装的组件更加具有扩展性。
  • 让使用者可以决定组件内部一些内容到底展示了什么。

举例:

  • 移动开发中,几乎每个页面都有导航栏
  • 导航栏我们会分装成一个插件,比如nav-bar组件
  • 一旦有了这个组件,我们就可以在多个页面中复用了
代码语言:html
AI代码解释
复制
<!--
1. 插槽的基本使用 <slot></slot>
2.插槽的默认值:<slot>button</slot>
3.如果有多个值,同时放入到组件进行替换时,一起作为替换元素
-->

<div id="app">
    <cpn><button>按钮</button></cpn>
    <cpn></cpn>
    <cpn><span>标签</span></cpn>
</div>

<template id="cpn">
    <div>
        <h2>我是组件</h2>
        <p>666</p>
        <slot><button>默认为按钮</button></slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn'
      }
    }
  })
</script>

2 具名插槽使用(导航)

代码语言:html
AI代码解释
复制
<div id="app">
    <cpn><span slot="center">标题</span></cpn>
    <cpn><button slot="center">标题</button></cpn>
</div>

<template id="cpn">
    <div>
        <slot name="left"><span>左边</span></slot>
        <slot name="center"><span>中间</span></slot>
        <slot name="right"><span>右边</span></slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn'
      }
    }
  })
</script>
具名插槽使用(导航)
具名插槽使用(导航)

3 作用域插槽

  • 父组件替换插槽的标签,但是内容由子组件来提供
代码语言:html
AI代码解释
复制
<div id="app">
    <cpn></cpn>

    <cpn>
        <!-- 目的是获取子组件中的pLanguages -->
        <template v-slot="slot">
            <span v-for="item in slot.data">{{ item }} * </span>
        </template>
    </cpn>

    <cpn>
        <!-- 目的是获取子组件中的pLanguages -->
        <!-- .join 将数组,转为字符串 -->
        <template v-slot="slot">
            <span>{{ slot.data.join(' * ') }}</span>
        </template>
    </cpn>

</div>

<template id="cpn">
    <div>
        <slot :data="pLanguages">
            <ul>
                <li v-for="item in pLanguages">{{ item }}</li>
            </ul>
        </slot>
    </div>
</template>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: "你好,有勇气的牛排"
    },
    components: {
      cpn: {
        template: '#cpn',
        data() {
          return {
            pLanguages: ['JavaScript', 'C++', 'Java', 'C#', 'Python']
          }
        }
      }
    }
  })
</script>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
vue slot插槽_笔记本内存条插槽显示4个
上述代码干了以下事情 1.定义了子组件cpn,然后在子组件中预留了一个插槽,插槽的内容由用户填写 2.父组件中使用了3次子组件,3个子组件分别给插槽填写了不同的内容
全栈程序员站长
2022/09/19
5200
vue slot插槽_笔记本内存条插槽显示4个
Vue组件化 模板 语法糖 函数 父子组件通信
支持:String、Number、Boolean、Array、Object、Date、Function、Symbol
有勇气的牛排
2023/06/25
2350
从零开始学VUE之组件化开发(插槽 slot)
可以看到Vue将所有的插槽都替换为了同样的,但是这并不是我想要的,这个时候就会用到具名插槽了
彼岸舞
2021/06/07
6390
从零开始学VUE之组件化开发(插槽 slot)
Vue之slot插槽
在生活中,电脑的USB接口对应不同的设备就提供不同的功能,可以接键盘、鼠标、音响、U盘…… 在组件中,slot的使用可以让封装的组件更有扩展性。 使用者可以根据需要修改组件。 比如一个搜索框组件,因为蓝色组件中会变成店铺,所以在封装搜索框组件时,就将这个容易变动的部分放在插槽中,使用者可以根据需要修改插槽部分。
yuanshuai
2022/08/22
5830
Vue之slot插槽
8.Vue组件三---slot插槽
同样的插线板, 可以插电视机, 电冰箱, 洗衣机 电脑的usb接口, 可以查鼠标, 插键盘, 还可以外接移动硬盘 插槽的扩展性更强.
用户7798898
2021/03/04
1.1K0
8.Vue组件三---slot插槽
Vue-slot插槽的所有使用方法
在父组件中无法访问到子组件中的数据,需要展示的数据还是子组件中的数据,但是展示的方式不同;通过设置slot-scope属性可以获取到子组件模板插槽中绑定的数据。
peng_tianyu
2022/12/15
3560
Vue-slot插槽的所有使用方法
Vue学习-组件化开发
将一个页面拆分成一个个小的功能块,每个功能块完成自己独立的功能,这样在之后的页面维护和管理就会方便许多。
花猪
2022/02/17
1.5K0
Vue学习-组件化开发
Vue进阶——组件化开发
类似微服务的软件架构,在前端开发中,一个页面的实现往往十分复杂,我们可以将一个页面划分为多个块,每个块负责相应的功能,块之间通过通信来交互。这样的前端开发方式正是组件化开发,一个页面是一个大的组件树,其下又划分有很多小的组件。这样一来,不仅降低了一次开发的难度,而且避免了重复造轮子,组件可以灵活的嵌入其他的Vue项目中进行使用。
matt
2022/10/25
1.2K0
Vue进阶——组件化开发
Vue 模板语法 插值操作 绑定属性 计算属性 事件监听 条件判断 循环遍历 阶段案例
Vue是一个用于构建用户界面的渐进式框架。与其他大型框架不同的是,Vue被设定为能够由底往上,逐层应用。其不仅语法简单,而且易于与其他第三方项目集成。在单页应用程序上仍能提供强大的支持
有勇气的牛排
2023/06/25
2810
Vue成神之路之实例和插槽
vue.js——开发版本:包含完整的警告和调试模式 vue.min.js——生产版本:删除了警告,进行了压缩
小胖
2018/12/14
2.4K0
Vue成神之路之实例和插槽
重学巩固你的Vuejs知识 2020-04-08
置身世外只为暗中观察!!!Hello大家好,我是魔王哪吒!重学巩固你的Vuejs知识体系,如果有哪些知识点遗漏,还望在评论中说明,让我可以及时更新本篇内容知识体系。欢迎点赞收藏!
达达前端
2020/04/10
1.9K0
懂个锤子Vue 自定义指定、插槽:
前言:当然既然学习框架的了,HTML+CSS+JS三件套必须的就不说了: JavaScript 快速入门
Java_慈祥
2024/07/31
1950
懂个锤子Vue 自定义指定、插槽:
重学巩固你的Vuejs知识(上)
https://github.com/webVueBlog/interview-answe/issues/156
达达前端
2020/10/28
3.8K0
vue2升级vue3:Vue2/3插槽——vue3的jsx组件插槽slot怎么处理
vue 在 2.6 版本中,对插槽使用 v-slot 新语法,取代了旧语法的 slot 和 slot-scope,并且之后的 Vue 3.0 也会使用新语法,这并不是仅写法的不同,还包括了性能的提升
周陆军博客
2022/06/24
2.3K0
Web前端-Vue.js必备框架(三)
vue是一款渐进式javascript框架,由evan you开发。vue成为前端开发的必备之一。
达达前端
2019/07/03
1.7K0
Web前端-Vue.js必备框架(三)
vue2基础
半月无霜
2023/10/18
3310
Vue
通过前面的介绍,我们对目前的项目工程化有了大体了了解,那么其中,在第二阶段的工程化演进中,有一个重要的工程设计理念诞生,他就是著名的 MVC 设计模式,简单点,MVC 其实就是为了项目工程化的一种分工模式;
jinghong
2020/05/12
7.1K0
Vue
vue组件传值与插槽详解
*子组件实例里写props对象,绑定属性,属性里可设置传入的数据类型和无数据传入时的默认值
生南星
2019/07/22
2.2K0
Vue插槽详解 | 什么是插槽?
什么是插槽?插槽的指令为v-slot,它目前取代了slot和slot-scope,插槽内容,vue实例一套内容分发的api,将slot元素作为承载分发内容的出口。
达达前端
2019/12/16
2.4K0
Vue插槽详解 | 什么是插槽?
04 . Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
vue组件 组件(Component)是 Vue.js 最强大的功能之一。 组件可以扩展 HTML 元素,封装可重用的代码。 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的
iginkgo18
2020/11/24
1.5K0
04 .  Vue组件注册,组件间数据交互,调试工具及组件插槽介绍及使用
相关推荐
vue slot插槽_笔记本内存条插槽显示4个
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档