IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue-Slot 插槽详解 -> 正文阅读

[JavaScript知识库]Vue-Slot 插槽详解

目录

什么是插槽

定义

插槽的作用

插槽的分类

默认插槽

具名插槽

作用域插槽

注意事项


什么是插槽

定义

实现功能

  • 将自定义内容插入 组件中指定的位置

自定义内容 (包括不限于以下)

  • HTML代码

  • 文本内容

  • 组件 ..

插槽的作用

  • 父组件,子组件的状态数据传递 (作用域插槽)

  • 提供灵活的,私人订制版组件

插槽的分类

默认插槽

代码

//定义组件 Card 
<template>
 ?<div class="cardContainer">
 ? ?<h3>Card组件</h3>
 ? ?<slot>我是一个插槽</slot>
 ?</div>
</template>
?
/****************************************/
?
//父组件使用Card组件
<template>
 ?<div id="app">
 ?  //使用Card组件
 ? ?<Card>
 ? ? ?<template>
 ? ? ?  //模板中的内容会替换 Card 组件中 <slot></slot>内容
 ? ? ?</template>
 ? ?</Card>
 ?</div>
</template> 

具名插槽

代码

//Vue解析模版时,默认情况下,未指定名称的插槽默认值为default
//同一个组件中,存在多个未命名插槽,当仅使用一个时,会将内容插入所有插槽中
?
//定义具名插槽
<template>
 ?<div class="cardContainer">
 ? ?<slot name="content"> 我是插槽1 </slot>
 ? ?<h4>更多内容 敬请关注...</h4>
 ? ?<slot name="footer">我是个插槽2</slot>
 ?</div>
</template>
?
?
//使用具名插槽
<template>
 ?<div id="app">
 ? ?<Card title="电影">
 ? ? ?<!--  v-slot:插槽名 -->
 ? ? ?<template v-slot:content>
 ? ? ?  我在使用名称:content的插槽
 ? ? ?</template>
 ? ?</Card>
 ?</div>
</template>

作用域插槽

使用场景

  • 父组件在向插槽中插入内容时需要使用子组件中定义的数据时

  • //作用域插槽 子组件
    <template>
     ?<div class="cardContainer">
     ? ?<h3>{{ title }}</h3>
     ? ?<slot name="content" :content="content"> 我是插槽1 </slot>
     ? ?<!-- 设置一个插槽 -->
     ? ?<h4>更多内容 敬请关注...</h4>
     ? ?<slot name="footer">我是个插槽2</slot>
     ? ?<span></span>
     ?</div>
    </template>
    <script>
    export default {
     ?name: "Card",
     ?data() {
     ? ?return {};
      },
     ?props: {
     ? ?title: String,
      },
     ?computed: {
     ? ?content() {
     ? ? ?if (this.title === "电影") {
     ? ? ? ?return ["恐怖", "惊悚", "喜剧"];
     ? ?  }
     ? ? ?if (this.title === "游戏") {
     ? ? ? ?return ["单机", "联机"];
     ? ?  }
     ?  },
      },
    };
    </script>
    <style scoped>
    .cardContainer {
     ?width: 400px;
     ?margin-left: 20px;
     ?background-color: aquamarine;
    }
    h3 {
     ?text-align: center;
    ?
     ?background-color: bisque;
    }
    </style>
    ?
    父组件
    
    <template>
     ?<div id="app">
     ? ?<Card title="电影">
     ? ? ?<!-- v-slot:插槽名="插槽属性绑定值 ,类型 Object" -->
     ? ? ?<template v-slot:content="contentInfo">
     ? ? ? ?<ul>
     ? ? ? ? ?<li v-for="item in contentInfo.content" :key="item">{{ item }}</li>
     ? ? ? ?</ul>
     ? ? ?</template>
     ? ?</Card>
     ? ?<Card title="游戏">
     ? ? ?<template v-slot:content>
     ? ? ? ?<ol>
     ? ? ? ? ?<li>单机</li>
     ? ? ? ? ?<li>联机</li>
     ? ? ? ?</ol>
     ? ? ?</template>
     ? ?</Card>
     ?</div>
    </template>
    ?
    <script>
    import Card from "./components/slot组件/Card";
    ?
    export default {
     ?name: "App",
     ?components: {
     ? ?Card,
      },
     ?mounted() {},
    };
    </script>
    ?
    <style>
    #app {
     ?display: flex;
     ?justify-content: space-around;
    }
    </style>
    ?

注意事项

  • 父级模板里的所有内容都是在父级作用域中编译的;子模板里的所有内容都是在子作用域中编译的。

  • v-slot 指令的使用区别与其他指令的语法形式

    • v-if= “”

    • v-slot:插槽名 (vue @2.6+版本新语法)

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:33:50  更:2021-12-09 11:34:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:26:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码