Vue--》动态组件和插槽的使用讲解

2023-1-6    前端达人

目录

动态组件

keep-alive使用

keep-alive的include和exclude属性

插槽


动态组件

动态组件指的是动态切换组件的显示与隐藏,vue提供了一个内置的<component>组件,专门用来实现动态组件的渲染。什么意思呢?接着往下看:

那么内置的<component>组件是什么情况呢?component 是可以作为标签使用的,其作用组件的占位符。当然其作为标签直接使用是会报错的,还需要搭配属性值 is ,其表示要渲染的组件的名字。如下:

那么如何去动态的切换组件呢?写一个简单的button按钮实现即可,如下:

keep-alive使用

当我们动态的去创建组件时,这一点和 v-if 很相似,改变组件会直接将改变之前的组件的数据销毁掉。如下:

我们给Left组件设置 +1 按钮,来表示其数据:

用生命周期函数来监听组件的创建和销毁:

那我们如何在动态创建组件的同时还能暴露组件之前的数据呢?这里就需要借助keep-alive。

keep-alive对应的生命周期函数

当组件被缓存时,会自动触发组件的deactivated生命周期函数。

当组件被激活时,会自动触发组件的activated生命周期函数。

 
        
  1. created(){
  2. console.log('Left组件被"创建"了');
  3. },
  4. destroyed(){
  5. console.log('Left组件被"销毁"了');
  6. },
  7. // 当组件第一次被创建的时候,既会创建created生命周期,也会执行activated生命周期
  8. // 当组件被激活时,只会触发activated生命周期,不再触发created。因为组件没有被重新创建
  9. activated(){
  10. console.log('组件被激活了,activated');
  11. },
  12. deactivated() {
  13. console.log('组件被缓存了,deactivated');
  14. },

keep-alive的include和exclude属性

include属性用来指定:只有名称匹配的组件会被缓存。多个组件名之间使用英文的逗号分隔:

exclude属性用来指定:只有名称匹配的组件“不“会被缓存。多个组件名之间使用英文的逗号分隔:

插槽

插槽Slot)是 vue 为组件的封装者提供的能力。允许开发者在封装组件时,把不确定的、希望由用户指定的部分定义为插槽。其操作如下:

vue官方规定:每一个slot插槽,都要有一个name名称,如果省略了slot的name属性,则有一个默认名称叫做 default ,默认情况下,在使用组件的时候,提供的内容都会被填充到名字为default的插槽之中。

如果要把内容填充到指定名称的插槽中,需要使用 v-slot:这个指令,v-slot:后面要跟上插槽的名字,注意:v-slot:指令不能直接用在元素身上,必须用在template标签上。当然这个指令也是有简写形式:# 即可。template:这个标签是一个虚拟标签,只其到包裹性质的作用,不会被渲染为任何实质性的 html 元素。

后备内容:封装组件时,可以为预留的<slot>插槽提供后备内容(默认内容)。如果组件的使用者没有为插槽提供任何内容,则后备内容会生效。

作用域插槽:在封装组件时,为预留的<slot>提供属性对应的值。如下:

当然上面的作用域插槽数据明显是写死了,那么可以将数据动态存储在data里面吗?答案是可以的

文章知识点与官方知识档案匹配,可进一步学习相关知识





  来源:csdn



蓝蓝设计建立了UI设计分享群,每天会分享国内外的一些优秀设计,如果有兴趣的话,可以进入一起成长学习,请加微信ban_lanlan,报下信息,蓝小助会请您入群。欢迎您加入噢~~

希望得到建议咨询、商务合作,也请与我们联系01063334945。 



分享此文一切功德,皆悉回向给文章原作者及众读者. 免责声明:蓝蓝设计尊重原作者,文章的版权归原作者。如涉及版权问题,请及时与我们取得联系,我们立即更正或删除。 



蓝蓝设计www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 平面设计服务UI设计公司、界面设计公司、UI设计服务公司、数据可视化设计公司、UI交互设计公司、高端网站设计公司、UI咨询、用户体验公司、软件界面设计公司

日历

链接

个人资料

蓝蓝设计的小编 http://www.lanlanwork.com

存档