Vue动态组件

954 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情juejin.cn/post/714765…

  • 动态组件类似于条件渲染的组件,面试的时候不要这样说,只不过从表现形式上来说。
  • 动态组件切换的话是组件被销毁了。动态组件做tab标签页更拿手

什么功能里用动态组件?

一般都是tab标签页使用动态组件。侧导航尽量不要使用动态组件,应该用路由。

怎么实现动态组件?

就是用一个<component :is="data里定义的变量,"></component>标记就可以实现,如下

  • is的值是组件名,这块是哪个组件名,就渲染哪个组件。
  • is的值可以是已注册组件的组件名或者是一个组件export出来的对象
  • 动态组件实际上是对组件的销毁和重建的过程。被销毁的组件之前的所有操作记录都被销毁,重建时不会保留之前的数据。

1.png 优势组件有二级项页面展示,例如a有二级项,现在是被打开的状态,然后切换到b组件,在切换回a组件,这时,a组件就会恢复到默认样式,如果想让a组件处在切换之前的样式展示,就要用到<keep-alive>标记

<keep-alive>缓存动态组件

  • <keep-alive>标记的作用:不会销毁组件,会把组件保存到内存中,是把ui的位置销毁了,这样的话,把ui进行重新渲染一下,就可以保留被销毁组件的数据。
  • 用法:用<keep-alive><component/>包裹起来
  • 包裹动态组件时,会缓存不活动的组件,而不是销毁它们。
  • 的三个属性
  • 属性1:include=“组件名”只缓存指定的组件
  • 属性2:exclude=“组件名”不缓存指定的组件
  • 属性3:max=“数字”,设置最多缓存多少个组件

异步组件

  • 指的就是异步加载组件
  • react组件中引入是同步组件,会先读取引入的组件,保存在内存中,然后再去执行创建class或者函数式组件。
  • 大多数异步加载组件用在切换路由的时候

异步组件的话,需要使用es6模块中的import()方法引入,它的返回值是promise,所以可以与async函数进行结合使用。

微信图片_20221007111628.png 当你处在a页面的时候,b页面有异步引入的组件,那么b页面先不去加载这个异步组件,当跳转到b页面的时候再去加载这个异步组件。