组件切换之笨办法、动态组件(is属性、keep-alive)、插槽(不具名、具名)

news/2024/11/26 13:09:49/

组件切换之笨办法、动态组件、动态组件之keep-alive、插槽(不具名、具名)

1 组件切换之笨办法

2 动态组件

3 动态组件之keep-alive

4 插槽

4.1 不具名插槽
4.2 具名插槽

1 组件切换之笨办法

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/axios.js"></script>
</head>
<body>
<div id="app"><button @click="who='home'">首页</button><button @click="who='good'">商品</button><button @click="who='order'">订单</button><hr><home v-if="who=='home'"></home><good v-else-if="who=='good'"></good><order v-else></order>
</div>
</body>
</html><script>var home = {template: `<div><h1>首页</h1></div>`}var good = {template: `<div><h1>商品页面</h1></div>`}var order = {template: `<div><h1>订单页面</h1></div>`}let vm = new Vue({el: '#app',data: {who: 'home'},components:{home,good,order,}});
</script>

2 动态组件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/axios.js"></script>
</head>
<body>
<div id="app"><button @click="who='home'">首页</button><button @click="who='good'">商品</button><button @click="who='order'">订单</button><hr><component :is="who"></component>`component`标签的is属性等于组件名字,这里就会显示这个组件</div>
</body>
</html><script>var home = {template: `<div><h1>首页</h1></div>`}var good = {template: `<div><h1>商品页面</h1></div>`}var order = {template: `<div><h1>订单页面</h1></div>`}let vm = new Vue({el: '#app',data: {who: 'home'},components:{home,good,order,}});
</script>

3 动态组件之keep-alive

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/axios.js"></script>
</head>
<body>
<div id="app"><button @click="who='home'">首页</button><button @click="who='good'">商品</button><button @click="who='order'">订单</button><hr>keep-alive:用于缓存动态组件或者将组件保持在活动状态,以便在切换页面时不会销毁它们<keep-alive><component :is="who"></component></keep-alive></div>
</body>
</html><script>var home = {template: `<div><h1>首页</h1></div>`}var good = {template: `<div><h1>商品页面</h1><p>搜索商品:<input type="text" v-model="name"><button @click="handleSearch">搜索</button></p></div>`,data(){return {name: ''}},methods: {handleSearch(){alert(this.name)}}}var order = {template: `<div><h1>订单页面</h1></div>`}let vm = new Vue({el: '#app',data: {who: 'home'},components:{home,good,order,}});
</script>

4 插槽

4.1 不具名插槽

插槽:一般情况下,编写完一个组件之后,组件的内容都是写死的,需要加数据,只能去组件中修改,扩展性很差。然后就出现了插槽这个概念,只需要在组件中添加<slot></slot>,就可以在body的组件标签中加内容。
--使用步骤:		1.在组件的html的任意位置,放个标签<slot></slot>2.后期再父组件中使用该组件时<lin>放内容</lin>3.放的内容,就会被渲染到slot标签中
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/axios.js"></script>
</head>
<body>
<div id="app"><lin><div>我是div</div></lin><hr><lin><img src="./img/1.jpg" alt="" height="200"></lin>
</div>
</body>
</html><script>var lin = {template: `<div><h1>我是一个组件</h1><slot></slot><h2>我是组件内部的h2</h2></div>`}let vm = new Vue({el: '#app',data: {},components:{lin}});
</script>

4.2 具名插槽

--使用步骤:	1 组件中可以留多个插槽,命名<div><h1>我是一个组件</h1><slot name="middle"></slot><h2>我是组件内部的h2</h2><slot name="footer"></slot></div>2 在父组件中使用时,指定某个标签渲染到某个插槽上<lin><div slot="footer">我是div</div><img src="https://scpic.chinaz.net/files/default/imgs/2023-05-12/23659b1edfc0a984.jpg" alt="" slot="middle"></lin>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="js/vue.js"></script><script src="js/axios.js"></script>
</head>
<body>
<div id="app"><lin><div slot="footer">我是div</div><img src="./img/2.jpg" alt="" slot="middel"></lin></div>
</body>
</html><script>var lin = {template: `<div><h1>我是一个组件</h1><slot name="middel"></slot><h2>我是组件内部的h2</h2><slot name="footer"></slot></div>`}let vm = new Vue({el: '#app',data: {},components:{lin}});
</script>

http://www.ppmy.cn/news/1117166.html

相关文章

Vue2使用vue-router初始化项目

Vue2使用vue-router初始化项目 **项目版本号** vue2.6.14 vue-router3.6.5在components中创建Main.vue文件&#xff0c;输入页面要显示的内容&#xff1a; <template><h1>这是 Main 组件</h1> </template><script> export default {name: thisM…

全渠道零售趋势——现代零售业成功的关键

在快节奏的零售时代&#xff0c;无论通过什么渠道购物&#xff0c;消费者越来越习惯无缝购物体验。因此&#xff0c;保持线上和线下购物体验的一致性有助于在品牌与购物者之间建立信任&#xff0c;这也是每个零售商的首要任务。在本文中&#xff0c;我们将介绍现代零售业成功的…

二十二、MySQL联合查询

1、基础概念 &#xff08;1&#xff09;语法&#xff1a; select …… from …… union [all] select …… from …… &#xff08;2&#xff09;理解&#xff1a; 所谓的联合查询&#xff0c;就是对多个条件查询结果进行联合处理&#xff0c;取其并集。 2、实际操作 &…

公转私到底怎么转才安全?通过这两种方法合理节税!

《梅梅谈税》专注于企业税务筹划&#xff01;助力企业合理、合规、合法进行节税税收筹划&#xff01; 公司本就是一个盈利的组织形式 &#xff0c;成立公司就是为了赚钱&#xff0c;公司赚了钱&#xff0c;就要转至私人账户自由支配&#xff0c;怎么合理从公司拿钱出来这也让很…

C#复习:面向对象基本概念

C#复习&#xff1a;面向对象基本概念 前言什么是面向对象类&#xff0c;名称空间的介绍 如何导入类库DLL引用(黑盒引用)项目引用(白盒引用)NuGet介绍 依赖关系C#的分装(个人理解) 前言 关于我C#的博客是根据刘铁猛老师的C#入门课程为基础写的&#xff0c;可以配合刘铁猛老师的…

什么是VLAN?VLAN是如何工作的?

【微|信|公|众|号&#xff1a;厦门微思网络】 VLAN&#xff08;Virtual Local Area Network&#xff09;即虚拟局域网&#xff0c;是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。 每个VLAN是一个广播域&#xff0c;VLAN内的主机间可以直接通信&#xff0c;而VLAN间则…

Linux文件内容显示练习

1.新建2个文件b1.txt b2.txt ,使用vim打开b1.txt 输入“Hello World”字符串,将b1.txt硬链接到b2.txt 查看2个文件的硬连接数 [rootserver ~]# vim b1.txt [rootserver ~]# ln b1.txt b2.txt #建立硬链接 [rootserver ~]# stat b2.txt [rootserver ~]# stat b1.txt [r…

【基于优化算法的光伏系统】基于光伏系统(由光伏、电池、转换器、PI 控制器、逆变器和充电控制器组成)的 Simulink 模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…