【Vue】插槽-slot

       📝个人主页:五敷有你      

 🔥系列专栏:Vue

⛺️稳中求进,晒太阳

插槽

作用:让组件内部一些 结构 支持 自定义

插槽的分类:

  • 默认插槽。
  • 具名插槽。

基础语法

组件内需要定制的结构部分,改用占位

<template><div class="main"><h2>确认吗</h2><slot></slot><div class="bottom"><button>确认</button><button>取消</button></div></div>
</template>

使用组件时,标签内部,传入结构替换slot

<BaseA>我是插槽练习</BaseA>

插槽的默认值

通过插槽完成内容的定制,传什么显示什么,但是不传,则是空白

插槽的后备内容:封装组件时,可以为预留的插槽提供后备内容(默认内容)

  • 语法:在slot标签内,放置内容,作为默认显示内容
  • 效果:
    • 外部使用组件不传东西,则slot会显示后备内容
    • 外部使用组件传东西了,则slot整体会被替换掉

具名插槽(一个组件有多处结构需要外部传入标签,进行定制)

语法:

多个slot使用name属性区分名字

简写:v-slot:插槽名 简化---- #插槽名

    <div class="main"><h2><slot name="head"></slot></h2><slot name="body">我是默认值</slot><div class="bottom"><slot name="foot"></slot></div></div>

template配置v-slot:名字 来分发对应标签

   <BaseA><template v-slot:head>我是标题</template><template v-slot:body><p>我是身体</p></template><template v-slot:foot><button>确认</button><button>取消</button></template></BaseA>

作用域插槽

作用域插槽:定义slot插槽的同时,是可以传值的,给插槽上 可以绑定数据, 将来 使用组件时可以用

场景:封装表格组件

基本使用步骤:

1. 给slot标签,以添加属性的方式传值。

<slot :id="item.id" msg="测试文本"></slot>

2. 所有添加属性,都会收集到一个对象中

{id:3,msg:"测试文本"}

3. 在template中,通过 #插槽名='obj'接收,默认插槽名为 default

<MyTable :list="list"><template #default="obj"><button @click="del(obj.id)">删除</button></template></MyTable> 

商品列表(实战):

App.vue

<template><div id="app"><MyTable :list="list"><template #thead><td>编号</td><td>图片</td><td>名称</td><td>标签</td></template><template #tbody="{item,index}" ><td>{{ index+1 }}</td><td>{{ item.img }}</td><td>{{ item.name }}</td><td><MyEle v-model="item.sign"></MyEle></td></template></MyTable></div>
</template><script>import MyEle from "./components/MyEle.vue"
import MyTable from "./components/MyTable.vue"
export default {data(){return{list:[{id:101,img:'001',name:"紫砂壶",sign:"茶具"},{id:102,img:'001',name:"皮鞋",sign:"男鞋"},{id:103,img:'001',name:"棉衣",sign:"衣服"},{id:104,img:'001',name:"毛衣",sign:"衣服"},{id:105,img:'001',name:"帽子",sign:"衣服"}]}},components:{MyEle,MyTable
},
methods:{},//局部注册指令
directives:{//指令名:指令配置项color:{inserted(el,binding){el.style.color=binding.value},update(el,binding){el.style.color=binding.value}}
},}</script><style scoped>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;margin-top: 60px;display: flex;justify-content: space-around;
}</style>

MyTable.vue

<template>
<div class="main"><table border="1"><thead><tr><!-- <td>编号</td><td>图片</td><td>名称</td><td>标签</td> --><slot name="thead"></slot></tr></thead><tbody><tr v-for="(item,index) in list" :key="item.id"><slot name="tbody" :item="item" :index="index" ></slot></tr></tbody></table>
</div>
</template>
<script>export default {props:{"list":Array,}
}
</script>
<style scoped></style>

Mytag.vue

<template>
<div class="main"><div class="ele" v-if="isShow" @click="isShow=false">{{ value }}</div><div v-else><input type="text" :value="value" v-focus @keyup.enter='update'></div>
</div></template>
<script>export default {props:{"value":String},data(){return {isShow:true,}},directives:{focus:{inserted(el){el.focus()}}},methods:{update(e){this.$emit("input",e.target.value)this.isShow=true}}
}
</script>
<style scoped>
.ele{text-align: center;color:rgb(50, 49, 49);font-size: 15px;
}
input{padding: 3px 4px;color:gray;font-size: 13px;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/708214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WEB漏洞 逻辑越权之支付数据篡改安全

水平越权 概述&#xff1a;攻击者尝试访问与他拥有相同权限的用户的资源 测试方法&#xff1a;能否通过A用户操作影响到B用户 案例&#xff1a;pikachu-本地水平垂直越权演示-漏洞成因 1&#xff09;可以看到kobe很多的敏感信息 2&#xff09;burp抓包&#xff0c;更改user…

Codeforces Round 929 (Div. 3)(A,B,C,D,E,F,G)

这场没考什么算法&#xff0c;比较水&#xff0c;难度也不是很高。比赛链接 硬要说的话E有个 前缀和 加 二分&#xff0c;F是数学BFS&#xff0c;G是个构造 A. Turtle Puzzle: Rearrange and Negate 题意&#xff1a; 给你一个由 n n n 个整数组成的数组 a a a 。您必须对…

IOC 和 AOP

IOC 所谓的IOC&#xff08;inversion of control&#xff09;&#xff0c;就是控制反转的意思。何为控制反转&#xff1f; 在传统的程序设计中&#xff0c;应用程序代码通常控制着对象的创建和管理。例如&#xff0c;一个对象需要依赖其他对象&#xff0c;那么它会直接new出来…

LNMP架构搭建

前言 LNMP架构是一种用于搭建Web服务器环境的解决方案&#xff0c;它由Linux、Nginx、MySQL&#xff08;或MariaDB&#xff09;、PHP&#xff08;或Python或Perl&#xff09;这四个开源软件组成。这种架构通常用于搭建高性能的网站和Web应用程序。 目录 一、编译安装nginx …

MySQL里的两个“二次”

文章中所有图片均来自网络 一、double write 第一个二次是mysql一个崩溃恢复很重要的特性-重复写入。 doublewrite缓冲区是位于系统表空间中的存储区域&#xff0c;在该区域中&#xff0c;InnoDB会在将页面写入数据文件中的适当位置之前&#xff0c;从InnoDB缓冲池中刷新这些页…

React中使用useActive

1.引入 import { useActivate } from "react-activation";2.React Activation 在React中使用react-activation,其实就是类似于Vue中的keep-alive&#xff0c;实现数据的缓存&#xff1b; 源码&#xff1a; import { ReactNode, ReactNodeArray, Context, Component…

vue3+vite+ts配置多个代理并解决报404问题

之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法 pathRewrite改为rewrite 根路径下创建env文件根据自己需要名命 .env.development文件内容 # just a flag ENVdevelopment# static前缀 VITE_APP_PUBLIC_PREFIX"" # 基础模块…

为高频大功率设计的双面水冷厚膜电阻方案

EAK双面水冷厚膜电阻是一种具有良好散热性能的电阻器&#xff0c;常用于需要高效散热的电子设备中。其包括第一绝缘介质层、厚膜电阻层、第二绝缘介质层以及用于液体流通的金属腔体&#xff0c;第一绝缘介质层设置于金属腔体的上表面&#xff1b;第一绝缘介质层表面设有厚膜电阻…

nginx反向代理之缓存 客户端IP透传 负载均衡

一 缓存功能 缓存功能可以加速访问&#xff0c;如果没有缓存关闭后端服务器后&#xff0c;图片将无法访问&#xff0c;缓存功能默认关闭&#xff0c;需要开启。 相关选项&#xff1a; ​ proxy_cache zone_name | off; 默认off #指明调用的缓存&#xff0c;或关闭缓存机制;C…

MySql-多表设计-一对一

目录 一对一 一对一 一对一关系表在实际开发中应用起来比较简单&#xff0c;通常是用来做单表的拆分&#xff0c;也就是将一张大表拆分成两张小表&#xff0c;将大表中的一些基础字段放在一张表当中&#xff0c;将其他的字段放在另外一张表当中&#xff0c;以此来提高数据的操…

kali linux通过aircrack-ng命令破解wifi密码

相关阅读&#xff1a;如何破解攻击WiFi 百度安全验证https://baijiahao.baidu.com/s?id1764248756021219497&wfrspider&forpc上面2篇文章写得都很不错 一、前期准备工作 1、将无线网卡挂载到Kali上 ​ 将无线网卡插到电脑上&#xff0c;如果弹出检测到新的USB设备&…

10、电源管理入门之OPP介绍

目录 1. 什么是OPP,怎么用? 2. 系统初始化加载OPP信息 3. 触发使用 4. API介绍 之前的文章设置clock的时候多次提到了(Operating Performance Point)OPP,例如DEVFreq、CPUFreq等,在现代SoC上存在有Power Domain,也可以以Power Domain为单位进行OPP的电压频率定义。 …

成人年龄判断(个人学习笔记黑马学习)

结合前面学习的input输入语句&#xff0c;完成如下案例: 1.通过input语句&#xff0c;获取键盘输入&#xff0c;为变量age赋值。(注意转换成数字类型) 2.通过if判断是否是成年人&#xff0c;满足条件则输出提示信息&#xff0c;如下&#xff1a; 欢迎来到黑马儿童游乐场&#x…

Window系统安装USB Redirector结合cpolar实现远程访问本地USB设备

文章目录 前言1. 安装下载软件1.1 内网安装使用USB Redirector1.2 下载安装cpolar内网穿透 2. 完成USB Redirector服务端和客户端映射连接3. 设置固定的公网地址 前言 USB Redirector是一款方便易用的USB设备共享服务应用程序&#xff0c;它提供了共享和访问本地或互联网上的U…

Spark Bloom Filter Join

1 综述 1.1 目的 Bloom Filter Join&#xff0c;或者说Row-level Runtime Filtering&#xff08;还额外有一条Semi-Join分支&#xff09;&#xff0c;是Spark 3.3对运行时过滤的一个最新补充   之前运行时过滤主要有两个&#xff1a;动态分区裁剪DPP&#xff08;开源实现&am…

迭代器模式:分离遍历逻辑与数据结构,实现统一访问接口与灵活扩展

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、优缺点分析总结&#xff1a; 一、引言 ​ 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种方法顺序访问聚合对象的元素&#xff0c;而又不暴露其底层表示。迭…

nginx 日志,压缩,https功能介绍

一&#xff0c; 自定义访问日志 &#xff08;一&#xff09;日志位置存放 1&#xff0c;格式 2&#xff0c; 级别 level: debug, info, notice, warn, error, crit, alert, emerg 3&#xff0c;示例 服务机定义 错误日志存放位置 客户机错误访问 查看错误日志 4&#xff…

DAY9-防病毒AV概述

DNS过滤 URL过滤和DNS过滤对比

广和通5G智能模组SC171支持Android、Linux和Windows系统,拓宽智能物联网应用

世界移动通信大会2024期间&#xff0c;广和通宣布&#xff1a;5G智能模组SC171除支持Android操作系统外&#xff0c;还兼容Linux和Windows系统&#xff0c;帮助更多智能终端客户快速迭代产品&#xff0c;拓宽智能化应用覆盖范围。 广和通SC171系列基于高通QCM6490物联网解决方案…

oracle with check option 学习

with check option保证了通过视图进行的修改&#xff0c;必须也能通过该视图看到修改后的结果&#xff1b; 你插入&#xff0c;那么插入这条记录在刷新视图后必须可以看到&#xff1b; 如果修改&#xff0c;修改完的结果也必须能通过该视图看到&#xff1b; scott登录了以后创…