Vue动态组件和keep-alive组件实例详解

 更新时间:2022年05月12日 10:00:55   作者:劉溜溜  
动态组件指的是动态切换组件的显示与隐藏,下面这篇文章主要给大家介绍了关于Vue动态组件和keep-alive组件的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

动态组件

多个组件使用同一个挂载点,并可以动态切换,这就是动态组件。

格式

    <component :is="comName"></component>

注意点

  • is只能是动态属性,:is="组件注册后的标签名字符串或data变量"
  • 不能直接拿注册标签名赋值使用

使用效果

需求: 完成一个注册功能页面, 2个按钮切换, 额外封装两个组件:一个填写注册信息, 一个填写用户简介信息。

目录结构

根组件
├── App.vue
└── components
    ├── UserName.vue # 用户名和密码输入框
    └── UserInfo.vue # 人生格言和自我介绍框

操作

UserName.vue

<template>
  <div>
    <h2>UserName</h2>
    <p>用户名:<input /> </p>
    <p>密码:<input /> </p>
  </div>
</template>

<script>
export default {

}
</script>

UserInfo.vue

<template>
  <div>
    <h2>UserInfo.vue</h2>
    <p>人生格言:<input /> </p>
    <p>自我介绍:<textarea /> </p>
  </div>
</template>

<script>
export default {

}
</script>

父组件APP.vue

<template>
  <div>
    <button @click="comName = 'UserName'">账号密码填写</button>
    <button @click="comName = 'UserInfo'">个人信息填写</button>

    <p>下面显示注册组件:</p>
    <div style="border: 1px solid red">
      <!-- vue内置的组件component, 可以动态显示组件 -->
      <component :is="comName"></component>
    </div>
  </div>
</template>

<script>
import UserName from "./UserName";
import UserInfo from "./UserInfo";
export default {
  data() {
    return {
      comName: "UserName",
    };
  },
  components: {
    UserName,
    UserInfo,
  },
};
</script>

效果

小结

vue内置component组件, 配合is属性, 设置要显示的组件标签名字。

keep-alive组件

使用背景

组件切换会导致组件被频繁销毁和重新创建, 大多数情况下是有自己的意义的,但也可能会导致不必要的性能损耗。

解决方法

使用Vue内置的keep-alive组件, 可以让包裹的组件保存在内存中不被销毁。

使用keep-alive组件

<keep-alive>
    <!-- vue内置的组件component, 可以动态显示组件 -->
    <component :is="comName"></component>
</keep-alive>

使用keep-alive组件会补充两个生命周期:

  • activated -激活
  • deactivated -失去激活状态

小结

keep-alive可以提高组件的性能, 内部包裹的标签不会被销毁和重新创建, 触发激活和非激活的生命周期方法。

keep-alive组件-指定缓存

keep-alive默认会将所有包裹的组件进行缓存,使用include属性可以指定缓存组件。

语法

  • 写法1: include="组件名1,组件名2..."
  • 写法2: :include="['组件名1', '组件名2']"
<keep-alive include="name1,name2">
    <!-- vue内置的组件component, 可以动态显示组件 -->
    <component :is="comName"></component>
</keep-alive>

注意:

匹配首先检查组件自身的 name 选项,如果 name 选项不可用,则匹配它的局部注册名称 (父组件 components 选项的键值)。

总结

到此这篇关于Vue动态组件和keep-alive组件的文章就介绍到这了,更多相关Vue动态组件 keep-alive组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Vue3中element-plus的el-dialog对话框无法显示的问题及解决方法

    关于Vue3中element-plus的el-dialog对话框无法显示的问题及解决方法

    最近今天在写一个停车场管理系统的项目时,在用vue3写前端时,在前端模板选择上,我一时脑抽,突然决定放弃SpringBoot,选择了以前几乎很少用的element-plus,然后果不其然,错误连连,下面给大家分享dialog对话框无法显示的原因,感兴趣的朋友一起看看吧
    2023-10-10
  • vue前端实现dhtmlxgantt甘特图代码示例(个人需求)

    vue前端实现dhtmlxgantt甘特图代码示例(个人需求)

    这篇文章主要介绍了如何使用dhtmlx-gantt和chinese-days插件在项目中实现节假日置灰显示的功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • Vue3和Electron实现桌面端应用详解

    Vue3和Electron实现桌面端应用详解

    本文主要介绍了Vue3和Electron实现桌面端应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • vite.config.ts如何加载.env环境变量

    vite.config.ts如何加载.env环境变量

    这篇文章主要介绍了vite.config.ts加载.env环境变量方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • 解决Element-ui radio单选框label布尔/数值的一个坑

    解决Element-ui radio单选框label布尔/数值的一个坑

    这篇文章主要介绍了解决Element-ui radio单选框label布尔/数值的一个坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue属性props默认类型的写法介绍

    vue属性props默认类型的写法介绍

    这篇文章主要介绍了vue属性props默认类型的写法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • vue+elementUI中el-radio设置默认值方式

    vue+elementUI中el-radio设置默认值方式

    这篇文章主要介绍了vue+elementUI中el-radio设置默认值方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • 基于cropper.js封装vue实现在线图片裁剪组件功能

    基于cropper.js封装vue实现在线图片裁剪组件功能

    这篇文章主要介绍了基于cropper.js封装vue实现在线图片裁剪组件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-03-03
  • Vue.js计算属性的变化监听的示例详解

    Vue.js计算属性的变化监听的示例详解

    在Vue.js中,计算属性(computed properties)是组件的重要组成部分,它们根据组件的数据自动计算新的值,并在数据变化时自动更新,本文将深入探讨如何在Vue.js中监听计算属性的变化,帮助你更好地理解Vue.js的响应式系统,需要的朋友可以参考下
    2025-03-03
  • 详解在Vue中有条件地使用CSS类

    详解在Vue中有条件地使用CSS类

    本篇文章主要介绍了详解在Vue中有条件地使用CSS类,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论