【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 。您必须对…

Unix Domain Socket 比 localhost(127.0.0.1)更快

当本机的进程间通讯时&#xff0c;使用localhost&#xff08;127.0.0.1&#xff09;、本机IP 和 Unix Domain Socket 之间有什么区别以前理解比较模糊&#xff0c;今天看了一篇文章&#xff0c;终于高明白了&#xff0c;就是这篇文章&#xff0c;写的非常好&#xff1a; (65 封…

【ERROR-pip-ubuntu】error: can‘t find Rust compiler

这个错误的关键信息是&#xff1a; error: cant find Rust compiler这表示无法找到 Rust 编译器。 针对这个问题&#xff0c;你可以尝试以下解决方法之一&#xff1a; **安装 Rust 编译器&#xff1a;**根据提示&#xff0c;你可以尝试安装 Rust 编译器。你可以从 Rust 官网&…

vscode安装配置

一、通过Code-Server安装 1.1、脚本安装 curl -fsSL https://code-server.dev/install.sh | sh#!/bin/sh set -eu# code-servers automatic install script. # See https://coder.com/docs/code-server/latest/installusage() {arg0"$0"if [ "$0" sh ];…

uniapp+node.js前后端做帖子模块:获取帖子列表(社区管理平台的小程序)

目录 0前提1.一些准备1.1表帖子表 post帖子评论表 postComment帖子点赞表 postLike 1.2总体思路 2.前端3.后端 &#x1f44d; 点赞&#xff0c;你的认可是我创作的动力&#xff01; ⭐️ 收藏&#xff0c;你的青睐是我努力的方向&#xff01; ✏️ 评论&#xff0c;你的意见是…

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缓冲池中刷新这些页…

服务器常见的问题及解决方案

在面对硬件结构复杂、繁琐的服务器&#xff0c;企业不免会遇到服务器发生异常问题或者是出现系统故障的情况&#xff0c;从而导致重要数据的丢失&#xff0c;给企业造成巨大的损失&#xff0c;那么面对服务器异常&#xff0c;我们应该如何进行解决呢? 1.用户无法访问页面 对于…

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;第一绝缘介质层表面设有厚膜电阻…

Vue2:路由组件缓存技术

一、情景说明 我们的页面中 可能同时存在多个路由组件需要切换 有些路由组件中有input等输入框&#xff0c;当输入了内容后&#xff0c;点击其他组件按钮 再次切换回来时&#xff0c;内容被清空了 这样&#xff0c;用户体验就很差 这里&#xff0c;就用到路由组件缓存技术 二…

java常见的应用场景

Java 在软件开发、企业应用、移动应用、游戏开发等领域都有广泛的应用。 软件开发&#xff1a;Java 是一门功能强大的编程语言&#xff0c;可用于开发各种类型的软件&#xff0c;包括网站、桌面应用、嵌入式系统等。 企业应用&#xff1a;Java 是一种广泛用于企业级应用开发的…

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…