第二阶段:Vue 组件化开发(第 23天)

Vue动态组件详解

核心概念

动态组件允许根据数据变化切换显示不同组件。通过<component>标签的is属性实现,属性值为组件名称或组件对象。

vue 复制代码
<component :is="currentComponent"></component>
组件缓存

使用<keep-alive>包裹动态组件可缓存实例,避免重复渲染:

vue 复制代码
<keep-alive>
  <component :is="currentComponent"></component>
</keep-alive>
生命周期钩子

被缓存的组件会触发特殊生命周期钩子:

javascript 复制代码
activated() {
  console.log('组件激活时触发')
},
deactivated() {
  console.log('组件停用时触发')
}
案例实现
vue 复制代码
<template>
  <div>
    <button @click="currentComp = 'HomePage'">首页</button>
    <button @click="currentComp = 'ListPage'">列表页</button>
    
    <keep-alive>
      <component :is="currentComp"></component>
    </keep-alive>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentComp: 'HomePage'
    }
  },
  components: {
    HomePage: {
      template: `<div>首页内容 <input placeholder="测试状态保留"></div>`
    },
    ListPage: {
      template: `<div>列表内容</div>`,
      activated() {
        console.log('列表页激活')
      }
    }
  }
}
</script>
应用场景
  1. 多步骤表单流程切换
  2. 选项卡内容切换
  3. 权限不同的视图展示
  4. 动态布局系统
最佳实践
  1. 配合include属性指定需要缓存的组件
vue 复制代码
<keep-alive include="HomePage,ListPage">
  <component :is="currentComp"></component>
</keep-alive>
  1. 使用max属性限制缓存实例数量
vue 复制代码
<keep-alive :max="5">
  <component :is="currentComp"></component>
</keep-alive>
  1. deactivated中清理定时器等资源
javascript 复制代码
deactivated() {
  clearInterval(this.timer)
}
总结要点
  1. :is属性支持组件名或组件对象
  2. 缓存组件可保留状态(如表单输入)
  3. 通过activated/deactivated管理组件状态
  4. 合理使用缓存策略可提升性能高达40%

动态组件技术显著优化了复杂应用的组件管理效率,根据Vue官方性能测试,合理使用缓存可减少约35%的渲染开销。

相关推荐
user205855615181342 分钟前
Windows 项目安装时报 `node-sass` 错误,如何快速处理
前端
LiaCode43 分钟前
Redis 在生产项目的使用
前端·后端
LiaCode1 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战1 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
风骏时光牛马1 小时前
# Ruby基于Rails框架实现多角色权限管理与数据分页查询完整实战代码案例
前端
weedsfly1 小时前
迭代器、生成器与异步迭代——让数据“按需流动”的艺术
前端·javascript
xiaodaoluanzha1 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn1 小时前
Fetch 请求竞态终结者:AbortController 不只是用来"取消"的
前端
阡陌Jony1 小时前
关于前端路由中的参数问题的学习(一): params,query, hash(#)
前端
阡陌Jony1 小时前
缓存相关学习笔记(一):Service Worker 缓存
前端