当前位置: 首页 > ai >正文

Vue动态/异步组件

下面,我们来系统的梳理关于 Vue 动态组件 & 异步组件 的基本知识点:


一、动态组件核心概念

1.1 什么是动态组件?

动态组件是 Vue 中一种在运行时动态切换不同组件的机制。通过 <component :is="..."> 语法,开发者可以根据应用状态动态决定渲染哪个组件,实现灵活的内容切换。

1.2 核心语法解析

<component :is="currentComponent"></component>
  • currentComponent:可以是已注册的组件名,也可以是组件选项对象
  • 动态绑定 :is 属性决定当前渲染的组件

1.3 工作原理

Vue 在运行时根据 is 的值决定渲染哪个组件:

  1. 卸载当前组件实例
  2. 初始化新组件实例
  3. 触发相应的生命周期钩子

二、动态组件基础用法

2.1 基本组件切换

<template><div><button @click="current = 'Home'">首页</button><button @click="current = 'About'">关于</button><component :is="current"></component></div>
</template><script>
import Home from './Home.vue'
import About from './About.vue'export default {components: { Home, About },data() {return {current: 'Home'}}
}
</script>

2.2 动态组件类型

类型示例特点
组件名(字符串):is="'Home'"需全局/局部注册
组件选项对象:is="HomeComponent"直接引用组件对象
动态组件名:is="dynamicComponentName"根据逻辑动态确定组件

三、组件切换行为控制

3.1 保持组件状态

默认情况下切换动态组件时,组件的状态不会保留。使用 <keep-alive> 包裹可缓存组件实例:

<keep-alive><component :is="currentComponent"></component>
</keep-alive>

3.2 keep-alive 生命周期

  • activated:组件被激活时触发
  • deactivated:组件被停用时触发

3.3 缓存策略配置

<keep-alive :include="['Home', 'About']" :exclude="['Admin']" :max="5"><component :is="currentComponent"></component>
</keep-alive>
  • include:匹配组件名/组件实例缓存
  • exclude:排除不缓存的组件
  • max:最大缓存组件数(LRU策略)

四、动态组件高级模式

4.1 动态组件工厂模式

export default {data() {return {componentMap: {home: HomeComponent,about: AboutComponent
http://www.xdnf.cn/news/13047.html

相关文章:

  • 1991-2024年上市公司个股换手率数据
  • Haption 力反馈遥操作机器人:6 自由度 + 低延迟响应,解锁精准远程操控体验
  • 设置Outlook关闭时最小化
  • mybatisX的使用,简化springboot的开发,不用再写entity、mapper以及service了!
  • JDK 17 序列化是怎么回事
  • Prompt‏ 工程和优化技巧
  • 产品经理课程(十三)
  • SE(Secure Element)加密芯片与MCU协同工作的典型流程
  • 在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
  • Origin图像数字化工具——如何复制其他人的图表作为对比数据
  • Linux 下部署安装docker
  • 京东商品sku抓取攻略|已封装API接口调用示例
  • SpringBoot配置
  • 【如何做好技术架构】
  • 大模型真的像人一样“思考”和“理解”吗?​
  • Python编程基础(五) | 字典
  • 深度伪造视频时代的“火眼金睛”:用Python打造假视频识别神器
  • 循环语句之for
  • Latex vscode安装、配置与使用-Windows
  • 文件上传漏洞防御全攻略
  • 从零手写Java版本的LSM Tree (六):WAL 写前日志
  • Chrome二级标签无法选中的解决方案
  • LMKD(Low Memory Killer Daemon)原理初识
  • Linux与量子计算:面向未来的架构演进
  • 在 Spring Boot 项目里,MYSQL中json类型字段使用
  • 快速解决 AJ-Captcha 自定义水印和底图问题
  • day36-多路IO复用
  • 前端Vue框架页面自适应问题:挑战与系统化解决方案
  • RetiZero
  • Kafka入门-Broker以及文件存储机制