首页 > 其他分享 >Vue2和3中的插槽区别及其简单案例

Vue2和3中的插槽区别及其简单案例

时间:2024-04-05 17:56:30浏览次数:12  
标签:name 作用域 插槽 案例 Vue2 组件

vue中的插槽是什么,官方解释是:

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

vue2插槽vue3插槽基本概念是一致的,也是匿名插槽、具名插槽、作用域插槽三种,只是基础语法有一些区别。

下面让我们温习一下插槽的常用基础知识点。

匿名插槽

Vue2案例:

<!-- 子组件 child-component -->  
<template>  
  <div>  
    <slot></slot>  
  </div>  
</template>  

<!-- 父组件使用匿名插槽组件 child-component -->  
<template>  
  <child-component>  
    <p>这是默认插槽的内容哈哈哈</p>  
  </child-component>  
</template>

Vue3案例:

<!-- 子组件child-component -->  
<template>  
  <div>  
    <slot></slot>  
  </div>  
</template>  
  
<!-- 父组件使用插槽组件 child-component -->  
<template>  
  <child-component>  
    <template v-slot>  
      <p>这是默认插槽的内容hello world</p>  
    </template>  
  </child-component>  
</template>

具名插槽

Vue2案例:

<!-- 子插槽组件child-component -->  
<template>  
  <div>  
    <slot name="header"></slot>  
    <slot name="content"></slot>  
    <slot name="footer"></slot>  
  </div>  
</template>

<!-- 父组件使用插槽组件child-component -->  
<template>  
  <child-component>  
    <template slot="header">  
      <h1>这是header部分</h1>  
    </template>  
    <template slot="content">  
      <p>这是content</p>  
    </template>  
    <template slot="footer">  
      <p>这是footer</p>  
    </template>  
  </child-component>  
</template>

Vue3案例:

<!-- 子插槽组件child-component -->  
<template>  
  <div>  
    <slot name="header"></slot>  
    <slot name="content"></slot>  
  </div>  
</template>  

<!-- 父组件使用插槽组件 -->  
<template>  
  <child-component>  
    <template v-slot:header>  
      <h1>这是header</h1>  
    </template>  
    <template v-slot:content>  
      <p>这是content</p>  
    </template>  
  </child-component>  
</template>

作用域插槽

作用域插槽日常可能使用的很少,但是某些场景用起来还是很方便的。可以简单的理解为 作用域插槽允许父组件访问子组件内部的数据,并基于这些数据渲染内容。

Vue2案例:

<!-- 子组件child-component返回给父级组件user数据 -->  
<template>  
  <div>  
    <slot :user="user"></slot>  
  </div>  
</template>  
  
<script>  
export default {  
  data() {  
    return {  
      user: { name: '张三000' }  
    }  
  }  
}  
</script>  
  
<!-- 父组件使用child-component ,并获取到子组件返回的 user数据-->  
<template>  
  <child-component>  
    <template slot-scope="scope">  
      <p>用户名:{{ scope.user.name }}</p>   <!--张三000-->
    </template>  
  </child-component>  
</template>

Vue3案例:

子插槽组件:

<template>  
    <slot :user="user"></slot>   
</template>  
<script setup>
import { reactive } from "vue";

const user = reactive({
    name: '张三',  
    age: 30  
});
</script>

父组件使用子插槽组件:

<template>  
  <div>  
    <child-component>  
        <template v-slot:default="{ user: { name, age } }">
            <p>姓名: {{ name }}</p>  
            <p>年龄: {{ age }}</p>  
        </template>  
    </child-component>  
  </div>  
</template>  
<script setup>
import ChildComponent from './ChildComponent.vue'; 
<script>

标签:name,作用域,插槽,案例,Vue2,组件
From: https://www.cnblogs.com/tianmiaogongzuoshi/p/18116001

相关文章

  • 【Java后端开发】教程及案例
    Java后端开发是软件开发中的一个重要领域,它涉及到服务器端的程序设计、数据库交互、API开发、安全性处理等多个方面。以下是关于Java后端开发的教程和案例的详细介绍:###Java后端开发基础####1.Java基础知识-掌握Java基础语法、面向对象编程、集合框架、异常处理等。-......
  • Docker内Chrome中文乱码的解决方案以及部署360奇安信失败案例
    Docker内Chrome中文乱码的解决方案以及部署360奇安信失败案例背景搞了一个清明假期,把chrome安装上去了可以实现简单的的版本确认然后想着搞一下国产化的浏览器突然发现国产化的浏览器的坑是无与伦比的深.记录一下过程.下载https://www.qianxin.com/ctp/gmbrowser.......
  • koa、koa-router、nunjucks 综合案例
     constKoa=require('koa');constrouter=require('koa-router')();constnunjucks=require('nunjucks');constapp=newKoa();//配置Nunjucksnunjucks.configure(__dirname+'/views',{autoescape:true,//是......
  • AI大模型与网球运动结合的应用场景及案例分析
            AI大模型与网球运动结合的未来前景是广阔的,它不仅能够提升运动员的训练和比赛表现,还能改善教练的策略制定、增强观众的观赛体验以及优化网球赛事的管理。以下是几个具体的应用场景:1.运动员技能和表现分析        AI大模型可以通过分析高速摄像头捕......
  • 程序员如何赚美元的案例
    偶然的契机让我走上了开发共享软件的道路。说起编写MP3CDMaker,要追溯到1998年。当时国内掀起了VCD热潮,中关村很多家公司做起了VCD刻录软件的生意。我也对这个市场很感兴趣,当时市面上刻录VCD的方法,是通过几种国外软件的组合解决,步骤繁琐,操作复杂,用户用起来很麻烦,严重影响销售......
  • 太强了!分布式Elasticsearch集群数据迁移企业案例
    太强了!分布式Elasticsearch集群数据迁移企业案例原创 林致远 Linux运维之旅 2024-04-0408:31 广东 1人听过Linux运维之旅专注分享运维实用技术,内容不限于Linux系统运维、自动化工具、监控工具、日志采集、容器技术、测试工具、python、GO等技术分享20篇原......
  • DHCP中继代理配置案例2(eNSP)
    本案例利用华为eNSP模拟器,由AC作DHCP服务器,三层交换机做DHCP中继代理,为网络中的AP和无线网络中的STA分配IP地址。一、拓扑结构二、网络规划1、AC1做DHCP服务器,为所有AP和移动终端分配IP2、AR1做DHCP中继服务器3、VLAN地址规划VLAN10地址段:192.168.10.0/24VLAN20地址段:1......
  • Mahout的taste推荐系统引擎(视频推荐案例)
    这是一个b站使用推荐引擎推荐的案例:0点赞1收藏2转发<selectid="getAllUserPreference"resultType="com.imooc.bilibili.domain.UserPreference">selectuserId,videoId,sum(caseoperationTypewhen'0'then6......
  • 27 个 CSS 案例演示和 DEMO(1),【大牛疯狂教学】
    伪类和伪元素==========4、伪类HTML元素的状态是可以动态变化的。举个栗子,当你的鼠标悬浮到一个按钮上时,按钮就会变成“悬浮”状态,这时我们就可以利用伪类:hover来选中这一状态的按钮,并对其样式进行改变。:hover是笔者最最常用的一个伪类。还有一个很常用的伪类是:nth......
  • Vue2电商前台项目(一):项目前的初始化及搭建
    一、项目初始化创建项目:sudovuecreateapp1.项目配置(1)浏览器自动打开在package.json文件中,serve后面加上--open"scripts":{"serve":"vue-cli-serviceserve--open","build":"vue-cli-servicebuild","lint":&q......