Vue 动态组件:灵活使用 Vue 内置的动态组件功能

Vue如何使用动态组件 / 组件声明时候的"name"名称的主要应用场景 结合 keep-alive 标签实现组建的缓存功能 以及在调试工具中看到组建的 name 名称。// 组件的"注册名称" 主要应用场景: 以标签的形式 把注册好的组件 渲染和使用到页面结构中。当在组件中定义了 name 属性后,在其他组件用到组件名时需要使用组件的 name 属性定义的名称。在 component 标签中的组件会被动态的创建和销毁,此时组件中的数据会在再次创建时被重置。当组件被激活时,会自动触发组件的 activated 生命周期函数。 阅读详情

Vue 动态组件:灵活使用 Vue 内置的动态组件功能

Vue 提供了一个强大的动态组件功能,使得开发者可以灵活地在应用中按需切换不同的组件,而无需重新加载整个页面。动态组件对于需要根据不同条件展示不同内容的场景(如标签页切换、内容展示区域等)尤为有用。通过 Vue 的动态组件功能,开发者可以极大地提高应用的灵活性和性能。

本文将详细介绍如何使用 Vue 的动态组件,涵盖基本用法、常见场景、最佳实践等内容。

文章目录

  1. 引言

  2. Vue 动态组件的基本用法

  3. 动态组件与条件渲染

  4. 组件懒加载与动态组件

  5. 性能优化:避免不必要的重新渲染

  6. Vue 动态组件与组件库的结合使用

  7. 总结


1. 引言

什么是动态组件

动态组件是指根据不同的条件或参数在应用中动态渲染不同的组件。Vue 提供了一个非常简单且灵活的方式来实现动态组件的切换,即通过 component 标签和 is 属性。

在 Vue 中,<component> 标签的 is 属性可以接收一个变量或组件的名称,从而决定渲染哪个组件。这为开发者提供了极大的灵活性,尤其适用于需要在应用中按需加载、切换或显示不同内容的场景。

动态组件的应用场景

动态组件适用于各种场景,以下是一些常见的应用场景:

  • 多标签切换:在标签页中动态切换组件,根据当前标签渲染不同的内容。
  • 表单选择:根据用户的选择,动态切换不同的表单组件。
  • 内容展示区域:根据不同条件展示不同的内容(例如,数据的不同类型对应不同的组件)。

2. Vue 动态组件的基本用法

2.1 使用 component 标签渲染动态组件

Vue 提供了一个 <component> 标签,结合 is 属性可以实现动态组件的渲染。is 属性接受组件名或组件对象,可以是一个静态字符串或动态的变量。

例如,在模板中:

<template>
  <component :is="currentComponent"></component>
</template>

<script>
import HelloWorld from './components/HelloWorld.vue';
import GoodbyeWorld from './components/GoodbyeWorld.vue';

export default {
  data() {
    return {
      currentComponent: HelloWorld
    };
  },
  methods: {
    switchComponent() {
      this.currentComponent = this.currentComponent === HelloWorld ? GoodbyeWorld : HelloWorld;
    }
  }
};
</script>

在上面的例子中,currentComponent 是一个绑定到 is 属性的变量,初始值是 HelloWorld 组件。当点击按钮时,switchComponent 方法会切换组件,动态地渲染 HelloWorld 或 GoodbyeWorld。

2.2 动态绑定 is 属性

is 属性不仅可以直接绑定组件的名称,还可以通过一个计算属性或者方法来动态获取当前需要渲染的组件。例如,动态计算 is 的值:

<template>
  <component :is="componentName"></component>
</template>

<script>
import AComponent from './AComponent.vue';
import BComponent from './BComponent.vue';

export default {
  data() {
    return {
      componentName: 'AComponent' // 默认为 AComponent
    };
  },
  methods: {
    toggleComponent() {
      this.componentName = this.componentName === 'AComponent' ? 'BComponent' : 'AComponent';
    }
  }
};
</script>

在这个例子中,componentName 可以动态变更为 AComponent 或 BComponent,实现组件的动态切换。

2.3 在 Vue 模板中使用动态组件

<component> 标签可以与 v-if 或 v-for 配合使用,以实现更加复杂的动态渲染。例如,使用 v-if 来根据条件渲染不同的组件:

<template>
  <component :is="isLoggedIn ? 'UserProfile' : 'LoginPage'"></component>
</template>

在上面的例子中,根据 isLoggedIn 的值,<component> 会动态切换为 UserProfile 组件或 LoginPage 组件。


3. 动态组件与条件渲染

3.1 基于条件渲染切换组件

在实际开发中,我们经常会遇到需要根据某个条件动态切换组件的场景。例如,根据用户的角色来显示不同的组件:

<template>
  <component :is="userRole === 'admin' ? 'AdminDashboard' : 'UserDashboard'"></component>
</template>

这里,userRole 用于判断当前用户的角色,进而切换显示 AdminDashboard 或 UserDashboard 组件。

3.2 动态组件与 v-if、v-else 配合使用

v-if 和 v-else 是 Vue 中的条件渲染指令,可以与动态组件一起使用。通过条件渲染来切换不同的组件或展示不同的内容。

<template>
  <div>
    <component v-if="isLoggedIn" :is="UserProfile" />
    <component v-else :is="LoginPage" />
  </div>
</template>

3.3 使用 v-for 循环渲染多个动态组件

当需要渲染一组动态组件时,可以结合 v-for 和 component 来实现。例如,在渲染一个列表时,每一项都可能是不同的组件:

<template>
  <div>
    <component v-for="(item, index) in items" :key="index" :is="item.component"></component>
  </div>
</template>

<script>
export default {
  data() {
    return {
      items: [
        { component: 'ItemComponentA' },
        { component: 'ItemComponentB' }
      ]
    };
  }
};
</script>

4. 组件懒加载与动态组件

4.1 懒加载的概念

懒加载是一种按需加载资源的技术,只有在真正需要时才加载组件。对于大型应用,懒加载可以显著提升性能,避免初始加载时加载所有资源。

4.2 使用异步组件实现懒加载

Vue 提供了异步组件的支持,可以实现懒加载。当动态组件的 is 属性指定的是一个异步组件时,Vue 会在需要时加载该组件。

const AsyncComponent = () => import('./components/AsyncComponent.vue');

export default {
  data() {
    return {
      currentComponent: AsyncComponent
    };
  }
};

4.3 在动态组件中结合懒加载

可以将懒加载与动态组件结合起来,按需加载不同的组件。例如:

<template>
  <component :is="currentComponent"></component>
</template>

<script>
export default {
  data() {
    return {
      currentComponent: () => import('./components/AsyncComponent.vue')
    };
  }
};
</script>

这样,只有当 currentComponent 需要渲染时,Vue 会动态加载 AsyncComponent。


5. 性能优化:避免不必要的重新渲染

5.1 key 的使用

使用 key 属性可以帮助 Vue 跟踪每个组件的变化,避免不必要的重新渲染。当多个动态组件同时渲染时,使用 key 可以提高性能。

<component v-for="(item, index) in items" :key="index" :is="item.component"></component>

5.2 动态组件与缓存

可以通过

keep-alive 来缓存动态组件,避免每次切换时重新渲染。例如,结合动态组件和缓存:

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

6. Vue 动态组件与组件库的结合使用

6.1 使用动态组件与 Vue UI 组件库

动态组件不仅可以用于自定义组件,也可以与 Vue UI 组件库一起使用。例如,使用 Element UI 或 Vuetify 的组件时,也可以通过动态组件切换不同的 UI 组件。

6.2 基于动态组件构建高度可复用的组件

动态组件可以帮助开发者构建高度可复用的组件,使得 UI 组件能够根据不同的需求灵活调整。这可以在大型项目中提高开发效率和维护性。


7. 总结

Vue 的动态组件功能为开发者提供了灵活的方式来管理和渲染组件。通过合理的使用动态组件,可以优化应用的性能,提升代码的可维护性。在实际项目中,动态组件适用于各种场景,如标签页切换、表单内容展示等。同时,结合懒加载、异步组件等技术,可以进一步提升应用的性能。

Vue组件:动态组件、缓存组件、异步组件 Vue.js 提供了对动态组件的支持。在使用动态组件时,多个组件使用同一挂载点,根据条件在不同组件之间进行动态切换。动态组件通过使用 Vue.js 中的元素,动态绑定到该元素的 is 属性,根据 is 属性的值来判断使用哪个组件。在多个组件之间进行切换的时候,有时需要保持这些组件的状态,将切换后的状态保留在内存中,以避免重复渲染。为了解决这个问题,可以用一个 元素将动态组件包含起来。 阅读详情

相关推荐

Vue组件定制——动态查询规则生成组件

1. 动态查询规则 动态查询规则,大致如下图所示。是可以按照用户的自定义进行组织查询语句的一种复杂组件,大致可以实现SQL查询的where条件,下面是摘自mongodb的某一软件。 2.组件构建思路 按照规则组件的组织形式,可以把其视为一棵树,有树干和树叶,这样看起来就不难了。 2.1 组件属性 data: 是树结构的内容,我们定义为: { condition: 'AND', rules: [], } fieldList: 字段列表数组,可供选择的字段集合; operatorList: 操作列表数

网尘的技术专栏 8097

Vue.js 中的动态组件是什么?如何使用动态组件?

在Vue.js中,动态组件是一种可以动态切换组件内容和结构的技术。动态组件允许我们在不刷新整个页面的情况下,动态地加载不同的组件,并在同一个位置上进行切换。动态组件的核心概念是keep-alive组件。keep-alive组件是一种特殊的组件,它可以缓存被包裹的动态组件的状态和实例,从而避免在组件切换时重新渲染和销毁组件。

it_xushixiong的博客 8017

ubuntu安装hodoop详细步骤

进入到Ubuntu系统中打开桌面,点击鼠标右键打开终端,在终端中输入如下命令这样就可以创建一名为hadoop的新用户。给用户输设置密码输入,输入如下命令,设置密码,按提示输入两次然后为hadoop用户增加管理员全新,这样就可以方便部署完成之后输入重启命令,重启一下Ubuntu系统,然后登录到我们创建的hadoop用户上面reboot。

2301_77603488的博客 9189

vue动态组件

1. 什么是动态组件 动态组件指的是动态切换组件的显示与隐藏。 2. 如何实现动态组件渲染 vue 提供了一个内置的 <component> 组件,专门用来实现动态组件的渲染。示例代码如下: 3. 使用 keep-alive 保持状态 默认情况下,切换动态组件时无法保持组件的状态。此时可以使用vue 内置的 <keep-alive> 组件保持动态组 件的状态。示例代码如下: 4. keep-alive 对应的生命周期函数 当组件被缓存时,会自动触发...

酷爱前端的小陈博客 8443

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

别再到处找包了!Keil5芯片支持包(Pack)最全管理指南:安装、更新、迁移与离线备份

本文详细解析了Keil5芯片支持包(Pack)的全生命周期管理,包括安装、更新、迁移与离线备份的工程化解决方案。针对STM32F10x等常见芯片,提供了高效获取Pack的策略、版本管理技巧及团队协作方案,帮助开发者解决常见的'Device Family Pack missing'等问题,提升嵌入式开发效率。

weixin_28729205的博客 533

探索Require-Vuejs:动态加载Vue组件的利器

探索Require-Vuejs:动态加载Vue组件的利器 在现代Web开发中,Vue.js已经成为构建用户界面的首选框架之一。然而,随着项目规模的扩大,如何高效地管理和加载Vue组件成为一个挑战。今天,我们将介绍一个强大的开源项目——Require-Vuejs,它通过RequireJS插件的形式,实现了Vue单文件组件的异步和动态加载。 项目介绍 Require-Vuejs是一个轻量级的库,专门设...

gitblog_00837的博客 1089

SAP交货单增强字段更新实战:手把手教你用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数

本文详细解析了如何使用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数实现SAP交货单增强字段的更新。从增强点SMOD_V50B0001的定位到字段落表的全流程,提供了ABAP代码示例和常见问题排查方法,帮助开发者高效完成交货单自定义字段的集成开发。

weixin_42525637的博客 450

Vue高阶知识:Vue动态组件的使用和传参详解

动态组件是 Vue 提供的一个非常强大的特性,它使得组件的渲染更加灵活,可以根据不同的条件切换不同的组件。通过正确地传递props和使用v-model,你可以轻松实现双向绑定。然而,在使用动态组件时,也需要考虑到其带来的性能问题,尤其是在大型应用中。通过合理的优化策略,如keep-alive缓存和懒加载,能够显著提高性能。对于开发者来说,理解动态组件的优势和局限性,并根据项目需求选择合适的使用方式,将有助于提高开发效率和应用的性能。

百锦再的博客 8624

从 AI 助手到 ADT 自动化桥梁:全面解析 Vibing Steampunk 的定位、能力边界与典型使用场合

Vibing Steampunk是一个面向SAP ABAP开发的AI自动化工具集,它通过ADT API将SAP开发能力系统化地暴露给AI助手和命令行工作流。该工具支持ECC、S/4HANA等所有启用ADT的系统,提供代码读取、修改、测试、调试等全流程自动化能力。核心功能包括AI调试、上下文压缩、ABAP语言服务、Lua脚本自动化等,并内置多重安全控制。其分层架构兼容标准ADT和WebSocket扩展,既适合AI驱动开发,也支持传统DevOps自动化,特别适用于老系统代码考古、知识接力和复杂问题诊断场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 147

信息安全管理与评估赛题解析-单机取证(含环境)

链接:https://pan.baidu.com/s/1OMzIq884dW2vAiUp0k2Ppg。链接:https://pan.baidu.com/s/1i5daMqhD53wYeQ6hYzRK6Q。链接:https://pan.baidu.com/s/1QFAjdQZK4sJ-gGRP42XPKA。链接:https://pan.baidu.com/s/1BSXvqN2ZGCQXewgFULoeyQ。链接:https://pan.baidu.com/s/1g9zu5ngBz_KMjW1eBMkJAw。

Brucye 1824

Vue教学14:动态组件与异步组件,提升应用的灵活性与性能

<button @click="componentToRender = 'ChildA'">切换到ChildA</button><button @click="componentToRender = 'ChildB'">切换到ChildB</button>

工作内容分享 1543

R语言 Chow Test

Chow 测试用于测试不同数据集上的两个不同回归模型中的系数是否相等。 该测试通常用于计量经济学领域,使用时间序列数据来确定数据在某个时间点是否存在结构性中断。 本教程提供了如何在 R 中执行 Chow 测试的分步示例 首先,我们将创建一些假数据: #create data data <- data.frame(x = c(1, 1, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13,

Mrrunsen的博客 1943

【Vuejs】1720- 详细聊一聊 Vue3 动态组件

???? 「相关文章」深入浅出 Vue3 自定义指令6 个你必须明白 Vue3 的 ref 和 reactive 问题初中级前端必须掌握的 10 个 Vue 优化技巧分享 15 个 Vue3 全家桶开发的避坑经验动态组件[1]是 Vue3 中非常重要的一个组件类型,它可以让我们在不同的场景下灵活地渲染不同的组件。✨ 快速上手使用动态组件非常简单,我们只需要在模板中使用 <component>...

pingan8787 4692

【电动汽车再生制动控制技术(万字长文,图文并茂)】

电动汽车再生制动的基本原理是:通过具有可逆作用的电动机/发电机来实现电动汽车动能和电能的转化。在汽车减速或制动时,可逆电机以发电机形式工作,汽车行驶的动能带动发电机将汽车动能转化为电能并储存在储能器(蓄电池或超级电容器)中;在汽车起动或加速时,可逆电机以电动机形式工作,将储存在储能器中的电能转化为机械能给汽车。这对于改善汽车的能量利用效率,延长电动汽车的行驶距离是至关重要的。

CSDN-新能源汽车研发测试专业博主 1563

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Vue动态组件

等疫情结束了,要开始爬爬山、看看海,做些不会后悔的事情 一、概念 1. 示例 组件是可复用的 Vue 实例,且带有一个名字,这里实现一个最简单的组件: 父组件: <template> <div> <h1>Father</h1> <!-- 调用子组件 --> <Son /> </div> </template> <script> // 引入子组件模块 impor..

yuan 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Vue.js的动态组件:实现灵活的组件切换

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程。

你若盛开,清风自来 953

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

vue 动态组件

动态组件就是几个组件放在一个挂载点下,然后根据父组件的某个变量来决定显示哪个,或者都不显示。 在挂载点使用 component 标签,然后使用 is =“组件名”,它会自动去找匹配的组件名,如果有,则显示; 看例子: &lt;!-- html部分 --&gt; &lt;div id="app"&gt; &lt;component is="one"&gt;&lt;/component&...

君非道的博客 1万+

Vue动态组件用法及使用场景

Vue允许你使用动态组件(Dynamic Components)来根据运行时的数据动态切换渲染不同的组件。这在构建可扩展和灵活的用户界面时非常有用。你可以使用元素来实现动态组件,结合:is属性来指定要渲染的组件。

全栈弄潮儿 3923

Require-VueJS:异步动态加载Vue组件的RequireJS插件

Require-VueJS:异步动态加载Vue组件的RequireJS插件 1. 项目基础介绍与主要编程语言 Require-VueJS 是一个开源项目,旨在提供一个 RequireJS 插件,用于异步和动态地加载和解析 Vue 单文件组件。该项目使用 JavaScript 编程语言开发,是 Vue.js 和 RequireJS 的一个集成解决方案,使得开发者可以在不进行构建过程的情况下,实现 V...

gitblog_00573的博客 1058

高阶 Vue 组件设计:如何实现动态组件与高阶组件

动态组件是指能够根据条件动态切换其渲染的组件。在 Vue 中,动态组件通常使用component标签和v-bind:is指令来实现,可以根据条件渲染不同的组件。根据用户操作切换显示不同的组件。实现组件懒加载,按需加载不同的组件。在组件之间切换时,保持组件的状态和生命周期。高阶组件(Higher-Order Component,简称 HOC)是一种函数式编程的概念,它是一个可以接受一个组件并返回一个新组件的函数。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 1294

vue2中如何动态渲染组件

方法局限了在组件内部,我们可以将这个方法抽离出来,挂载到 Vue 原型上,就可以在全局调用。了解了如何通过函数调用渲染组件,可以封装一个二次确认弹窗, 用户确认后再进行下一步操作。了解了动态渲染组件的原理,我们可以通过函数调用的方式,动态地渲染组件。返回的是一个 Vue 的子类,而不是一个 Vue 的实例。既然可动态渲染一个组件,把这个过程封装成一个函数,可通过。函数传递一个回调函数,当用户点击确定时,执行回调函数。下面的代码,当用户点击按钮时,会动态渲染一个。上,这样就实现了App.vue 的渲染。

JackZhouMine 2868

Vue内置组件全解析:从入门到面试通关

本文系统介绍了Vue.js的核心内置组件及其应用场景。主要包括动态组件<component>实现组件切换、过渡动画组件<transition>为元素添加进入/离开效果、缓存组件<keep-alive>优化性能、内容分发组件<slot>实现灵活布局,以及<teleport>组件实现DOM位置控制。每种组件都配有代码示例和关键属性说明,并特别标注了面试常见考点。掌握这些内置组件能显著提升Vue开发

x15514104477的博客 853

Vue2 穿梭框组件封装实战:功能增强与灵活扩展

本文介绍了基于Vue2和ElementUI封装的高定制化穿梭框组件。该组件在el-transfer基础上进行了功能增强,实现了左右面板数据解耦,支持文本搜索和自定义搜索条件组合,提供灵活的插槽扩展能力和丰富的交互功能。文章详细讲解了组件的实现过程,包括基础结构搭建、数据管理、属性配置、核心功能实现等关键点,并给出了使用指南和完整代码。该组件通过props配置、插槽机制和事件系统,可满足各种复杂业务场景的需求,显著提高开发效率。

chouge的博客 1495

【Vue】Vue2 与 Vue3 内置组件对比

Vue2和Vue3的内置组件。在 Vue 3 中,除了语法上的变动(如 Composition API、Fragments、Teleport 等),还引入了一些新的 内置组件 和 内置特性,比如Teleport,Suspense,defineAsyncComponent等。

m0_47814717的博客 822

vue3 - 内置组件Teleport的使用

Vue.js的Teleport组件可以将模板片段渲染到DOM结构外层,常用于模态框、Toast提示等需要全局展示的场景。通过to属性指定目标位置(如body或其他DOM节点),Teleport仅改变渲染位置而不影响组件逻辑关系,父子组件通信依然有效。示例展示了模态框组件的使用方式,包括props传递和事件触发。Teleport支持禁用功能,多个Teleport共享同一目标时会按顺序追加渲染。该特性简化了嵌套组件的定位和样式管理,避免样式污染。

尽日寻春不见春,芒鞋踏遍陇头云。归来笑拈梅花嗅,春在枝头已十分。 7023
上一篇: Vuex 中的 mutation、action 与 getter:数据流与管理的核心
下一篇: Vue 3 新增特性:Teleport、Suspense 与 Fragments 深度剖析
全栈探索者chen
全栈探索者chen 新星创作者: 前端开发技术领域 新星创作者: 前端开发技术领域
博客等级 码龄10年 9415粉丝 1027原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈探索者chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值