【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.hqwc.cn/news/498800.html

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

相关文章

AI:145-智能监控系统下的行人安全预警与法律合规分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

Python算法100例-2.10 马克思手稿中的数学题

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.运行结果 1&#xff0e;问题描述 马克思手稿中有一道趣味数学问题&#xff1a;有30个人&#xff0c;其中有男人、女人和小孩&#xff0c;他们在同一家…

安装DGL注意事项

安装DGL注意事项 一、首先得确定自己电脑或者服务器环境安装的 python 和 cuda 版本是多少&#xff0c;然后选择对应的dgl进行安装&#xff0c;而不是直接使用下面的代码直接进行安装&#xff0c;否则会报错。 pip install dgl # 这种直接安装方式不妥DGL backend not select…

【Activiti7系列】Activi7简介和基于Spring Boot整合Activiti7(流程设计器)

本文将介绍Activiti7基础概念及基于Spring Boot整合Activiti7(流程设计器)的具体步骤。 作者&#xff1a;后端小肥肠 1. 前言 在企业级应用中&#xff0c;业务流程的管理和执行是至关重要的一环。Activiti7是一个强大的开源工作流引擎&#xff0c;它提供了灵活的流程定义、任务…

C++初阶:模版相关知识的进阶内容(非类型模板参数、类模板的特化、模板的分离编译)

结束了常用容器的介绍&#xff0c;今天继续模版内容的讲解&#xff1a; 文章目录 1.非类型模版参数2.模板的特化2.1模版特化引入和概念2.2函数模版特化2.3类模板特化2.3.1全特化2.3.1偏特化 3. 模板分离编译3.1分离编译概念3.2**模板的分离编译**分析原因 1.非类型模版参数 模板…

深入理解Linux线程(LWP):概念、结构与实现机制(1)

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;会いたい—Naomile 1:12━━━━━━️&#x1f49f;──────── 4:59 &#x1f504; ◀️ ⏸ ▶️ ☰ &a…

日志项目2

【C - 基于多设计模式下的同步&异步日志系统】 文章目录 【C - 基于多设计模式下的同步&异步日志系统】项目开发7. 日志系统框架设计7.1 模块划分7.2 模块关系图 8. 代码设计8.1 实用类设计8.2 日志等级类设计8.3 日志消息类设计8.4 日志输出格式化类设计8.5 日志落地(…

【前端素材】推荐优质在线手表商城电商网页 WristArc平台模板(附源码)

一、需求分析 1、系统定义 在线服饰购物商城是指一个通过互联网提供服装和配饰购买服务的电子商务平台。这类商城通常提供一个网站或移动应用程序&#xff0c;让顾客可以浏览、选择和购买各种类型的服装、鞋帽、包包、配饰等时尚商品。 2、功能需求 在线手表商城是指一个通…

【前端素材】推荐优质在线高端蜂蜜商城电商网页Beejar平台模板(附源码)

一、需求分析 1、系统定义 在线礼品商城平台是一种通过互联网提供礼品购买服务的电子商务平台。这类平台通常为消费者和商家提供一个交易和互动的虚拟空间&#xff0c;使用户可以浏览、选择和购买各种礼品产品。 2、功能需求 在线礼品商城平台是一种通过互联网提供礼品购买…

精酿啤酒:原料的采购策略与市场动态

对于啤酒制造商而言&#xff0c;原料的采购策略与市场动态紧密相连&#xff0c;直接影响到产品的成本、品质和市场竞争力。Fendi Club啤酒在这方面有着与众不同的见解和实践&#xff0c;确保了原料的稳定供应和品质&#xff0c;同时也灵活应对市场变化。 首先&#xff0c;Fendi…

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突

SQLSERVER 2014 删除数据库定时备份任务提示失败DELETE 语句与 REFERENCE 约束“FK_subplan_job_id“冲突 &#xff0c;错误如图&#xff1a; 问题原因&#xff1a;不能直接删除作业 任务&#xff0c;需要先删除计划里面的日志、删除代理作业、删除子计划以后才能删除作业。 解…

Vue3 学习笔记(Day5)

「写在前面」 本文为尚硅谷禹神 Vue3 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. Vue3 学习笔记&#xff08;Day1&#xff09; 2. Vue3 学习笔记&#xff08;Day2&…