前言
在vue的开发过程中,咱们会常常应用到vue的slot插槽组件,vue官网文档的形容:
Vue 实现了一套内容散发的 API,这套 API 的设计灵感源自 Web Components 标准草案,将 <slot> 元素作为承载散发内容的进口
slot大略分为以下几种:
根底slot组件(匿名插槽)
匿名插槽次要应用场景并不波及特地简单的业务,更像是纯展现组件内容
<!--子组件--><template> <span> 我是根底slot子组件, 父组件传过来的值: <span style="color: red"><slot></slot></span> </span></template>
<!--父组件--><li> 根底slot组件(匿名插槽):<Base>这是一段父组件传过来的文字</Base></li>import Base from "./Base.vue";
具名插槽
具名插槽,须要在父组件和子组件约定插槽名称
<!--子组件--><template> <span> <span style="color: red"> <slot name="name1"></slot> <slot name="name2"></slot> </span> </span></template>
<!--父组件--><li> <p>具名插槽:</p> <Specific> <template v-slot:name1> <p>name1传过来的内容</p> </template> <template v-slot:name2> <p>name2传过来的内容</p> </template> </Specific></li>import Specific from "./Specific.vue";
作用域插槽
作用域插槽,子组件提供数据,父组件接管子组件的值并展现和解决逻辑
<!--子组件--><template> <span> <span> <slot name="scopeName" v-bind:scopeData="age"></slot> </span> </span></template><script lang="ts">import { Component, Vue, Prop } from "vue-property-decorator";@Componentexport default class Scope extends Vue { private age: Number = 23;}</script>
<!--父组件--><li> <p>作用域插槽</p> <Scope> <template v-slot:scopeName="childData"> 作用域子组件slot返回的数据: <span style="color: red"> {{ childData.scopeData }} </span> </template> </Scope></li>import Specific from "./Specific.vue";
解构插槽
解构插槽,相似在js书写对象过程中的对象解构
{ data:{ username:1 } }
<!--子组件--><template> <span> <p> <slot v-bind:user="user"></slot> </p> </span></template><script lang="ts">import { Component, Vue, Prop } from "vue-property-decorator";@Componentexport default class Deconstru extends Vue { private user: Object = { name: "zhangsan", age: 23, };}</script>
<!--父组件--><li> <p>解构插槽</p> <Deconstru> <template v-slot="{ user: person }"> 父组件模板:{{ person.name }},{{ person.age }} </template> </Deconstru></li>import Specific from "./Deconstru.vue";
以上例子均已上传至开源仓库,后续对于vue的学习笔记均会更在在该我的项目上,欢送star
码云 https://gitee.com/lewyon/vue-note
githup https://github.com/akari16/vue-note
总结
在vue的插槽文档中,还有蕴含
- 独占默认插槽
- 动静插槽名
具名插槽的缩写
<template #footer> <p>Here's some contact info</p></template>
具体对于插槽的官网文档传送门
https://cn.vuejs.org/v2/guide...
文章集体博客地址:vue2版本中slot的根本应用详解
创作不易,转载请注明出处和作者。