vue2中插槽(slot)的基本使用规范

目录
  • 前言
  • 基础slot组件(匿名插槽)
  • 具名插槽
  • 作用域插槽
  • 解构插槽
  • 总结

前言

在vue的开发过程中,我们会经常使用到vue的slot插槽组件,vue官方文档的描述:

Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将元素作为承载分发内容的出口

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";

@Component
export 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";

@Component
export 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

总结

到此这篇关于vue2中插槽(slot)的基本使用规范的文章就介绍到这了,更多相关vue2中slot使用规范内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈Vue中插槽slot的使用方法

    如何定义和使用: 在组件的template中使用slot标签定义,slot标签中间可以定义默认显示值,如果slot标签没有声明name属性值,在使用插槽时将默认从第一个插槽依次往下放置,为了方便使用,一般都会都插槽slot指定一个name属性值,当要使用该插槽时,只需要在要使用的标签内添加slot='插槽名字',就可以将指定的标签放到指定的插槽内,插槽内可以是任意内容. 举例: <!DOCTYPE html> <html lang="en"> <head&

  • Vue中插槽slot的使用方法与应用场景详析

    什么是插槽? 我们知道在Vue中 Child 组件的标签 的中间是不可以包着什么的 . 可是往往在很多时候我们在使用组件的时候总想在组件间外面自定义一些标签,vue新增了一种插槽机制,叫做作用域插槽.要求的版本是2.1.0+: 插槽,其实就相当于占位符.它在组件中给你的HTML模板占了一个位置,让你来传入一些东西.插槽又分为 匿名插槽.具名插槽.作用域插槽. 在 2.6.0 中,我们为具名插槽和作用域插槽引入了一个新的统一的语法 (即 v-slot 指令).它取代了 slot 和 slot-sc

  • Vue默认插槽,具名插槽,作用域插槽定义及使用方法

    目录 一.三种插槽的定义 1.默认插槽 2.具名插槽 3.作用域插槽 二.使用方法 1.默认插槽 2.具名插槽 3.作用域插槽 应用场景: 插槽的作用是在子组件中某个位置插入父组件的自定义html结构和data数据 一.三种插槽的定义 插槽分为三种: 默认插槽 具名插槽 作用域插槽 1.默认插槽 [定义:默认插槽是将父组件的结构和数据插入子组件中,默认插槽只有一个插入位置,要插入的html结构和data数据必须在父组件中,不过css可以在子组件中][简述:将父组件的自定义html和data插入子

  • Vue slot插槽的使用详情

    目录 1.为什么使用slot 1.1 slot(插槽) 1.2 组件中的插槽 1.3 例子 2.如何封装这类组件(slot) 3. 插槽的案例 4.插槽默认值 5.具名插槽 6.编译作用域 7.作用域插槽 1.为什么使用slot 1.1 slot(插槽) 在生活中很多地方都有插槽,电脑usb的插槽,插板当中的电源插槽 插槽的目的是为了让我们原来的设备具备更多的扩展性 比如电脑的USB我们可以插入U盘,手机,鼠标,键盘等等 1.2 组件中的插槽 组件的插槽也是为了让我们的组件更具有扩展性 让使用者

  • vue+element-ui表格封装tag标签使用插槽

    我们知道有很多系统都要求表格中添加各种各样的tag,来标记一些属性.在element-ui中添加tag很简单,最重要的就是用到了vue的插槽slot这个特性.首先了解什么是插槽. 插槽 省去官方的复杂讲解和代码,插槽的意思简单来说,就是在子组件的某个地方留一个占位符,当父组件使用这个子组件的时候,可以自定义这个占位符所占地方呈现的样子,可能是一个标题,一个按钮,甚至一个表格,一个表单. 为什么要插槽呢?我们抽离组件的原因就是因为可重复的代码太多了,当使用可复用的组件时,大大减少了复制粘贴.设想有

  • Vue3 插槽使用汇总

    目录 一.v-slot 介绍 二.匿名插槽 三.具名插槽 四.作用域插槽 五.动态插槽名 一.v-slot 介绍 v-slot 只能用在 template 或组件上使用,否则就会报错. v-slot 也是其中一种指令. 使用示例: //父组件代码 <child-com> <template v-slot:nameSlot> 插槽内容 </template> </child-com> //组件模板 <slot name="nameSlot&qu

  • Vue 中插槽的使用总结

    目录 默认插槽 具名插槽 作用域插槽 插槽总结 默认插槽 首先做一个页面: 新增 Category.vue <template> <div class="category">   <h3>{{title}}分类</h3>   <ul>     <li v-for="(item,index) in listData" :key="index">{{item}}</li&g

  • vue2中插槽(slot)的基本使用规范

    目录 前言 基础slot组件(匿名插槽) 具名插槽 作用域插槽 解构插槽 总结 前言 在vue的开发过程中,我们会经常使用到vue的slot插槽组件,vue官方文档的描述: Vue 实现了一套内容分发的 API,这套 API 的设计灵感源自 Web Components 规范草案,将元素作为承载分发内容的出口 slot大概分为以下几种: 基础slot组件(匿名插槽) 匿名插槽主要使用场景并不涉及特别复杂的业务,更像是纯展示组件内容 <!--子组件--> <template>   

  • Vue3中插槽(slot)用法汇总(推荐)

    目录 什么是插槽 默认内容 具名插槽 动态插槽名 作用域插槽 作用域插槽 具名作用域插槽 写在最后 Vue中的插槽相信使用过Vue的小伙伴或多或少的都用过,但是你是否了解它全部用法呢?本篇文章就为大家带来Vue3中插槽的全部用法来帮助大家查漏补缺. 什么是插槽 简单来说就是子组件中的提供给父组件使用的一个 坑位 ,用 <slot></slot> 表示,父组件可以在这个坑位中填充任何模板代码然后子组件中 <slot></slot> 就会被替换成这些内容.比如一

  • Vue3中插槽(slot)的全部使用方法

    目录 什么是插槽 默认内容 具名插槽 动态插槽名 作用域插槽 作用域插槽 具名作用域插槽 写在最后 Vue中的插槽相信使用过Vue的小伙伴或多或少的都用过,但是它的所有用法你是否全部理解呢?本篇文章就为大家带来Vue3中插槽的全部用法来帮助大家查漏补缺. 什么是插槽 简单来说就是子组件中的提供给父组件使用的一个坑位,用<slot></slot> 表示,父组件可以在这个坑位中填充任何模板代码. 比如一个最简单插槽例子: //父组件 <template> <div&g

  • Vue中插槽Slot基本使用与具名插槽详解

    目录 一.插槽Slot 1.1.插槽Slot的作用 1.2.具名插槽Slot Ps:作用域插槽 总结 一.插槽Slot 1.1.插槽Slot的作用 初识插槽: 为了让这个组件具备更强的通用性,我们不能将组件中的内容限制为固定的div.span等等这些元素: 比如某种情况下我们使用组件,希望组件显示的是一个按钮,某种情况下我们使用组件希望显示的是一张图片: 我们应该让使用者可以决定某一块区域到底存放什么内容和元素: 所以就可以使用插槽来解决这个问题 换句话说就是,我们要是想在一个组件标签中添加新的

  • Vue中插槽slot的使用方法

    目录 1.什么是插槽 2.插槽的使用 3.v-slot指令 4.具名插槽 5.具名插槽的简写形式 6.作用域插槽 7.解构插槽 Prop 1.什么是插槽 插槽(slot)是 vue 为组件的封装者提供的能力.允许开发者在封装组件时,把不确定的.希望由用户 指定的部分定义为插槽. 2.插槽的使用 在封装组件时,可以通过 元素定义插槽,从而为用户预留内容占位符. // 子组件 <template> <div class="left-container"> <h

  • Vue中的slot使用插槽分发内容的方法

    本文题材来自:https://cn.vuejs.org/v2/guide/components.html#%E4%BD%BF%E7%94%A8%E6%8F%92%E6%A7%BD%E5%88%86%E5%8F%91%E5%86%85%E5%AE%B9 <slot></slot>标签,简单来说就是占位符,它会帮你占好位置,等你需要的时候直接将html传入,它会帮你显示出来. 也有人说:props可以将数据从父组件传入子组件,slot可以将html从父组件传入子组件.那么如何实现呢?

  • vue中的 $slot 获取插槽的节点实例

    vue 中的 $slot 以前一直不知到这个东西,后来发现 vue api 中 藏着很多的 很神奇的 api,比如这个 具名插槽很好理解,但是那个 default 就有点难了, 写了一个炒鸡简单的 demo father: <template> <div> <button @click="getSlot">getSlot</button> <try ref="try"> <div class=&quo

  • JavaScript--在Vue中使用插槽:slot

    目录 在Vue中使用插槽:slot 作用域插槽:使用template标签包裹 总结 在Vue中使用插槽:slot 1.在子组件的template里可以直接使用slot标签<slot></slot>,它可以显示父组件向子组件插入的内容. 2.slot标签里面可以写一些默认值,当父组件没有插入内容的时候它就会显示默认值,插入内容时就只显示插入的内容. 3.当使用多个slot标签时,直接插入多个内容时,每个slot标签内都会包括所有插入的内容. 可以通过slot属性给插入的不同内容设置指

随机推荐