动态组件、组件缓存

这篇具有很好参考价值的文章主要介绍了动态组件、组件缓存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

动态组件

多个组件使用一个挂载点,并动态切换,就是动态组件

需求:完成一个注册功能页面,2个按钮,一个填写注册信息,一个填写用户简介信息 

步骤

  • 定义两个组件 UserName.vue,UserInfo.vue 2个组件
  • 引入到 App.vue组件中
  • data中定义变量来存放要显示的组件名
  • 要设置挂载点 <component>,使用 is 属性来设置要显示哪个组件
  • 点击按钮,修改变量里的组件名

App.vue

<template>
  <div>
    <button @click="comName = 'UserName'">账号密码</button>
    <button @click="comName = 'UserInfo'"> 个人信息 </button>
    <p> 下面显示动态切换组件 </p>
    <div style=" border: 1px solid red;">
      <component :is="comName"></component>
    </div>
  </div>
</template>

<script>
/*
同一个挂载点要切换不同组件  显示
    1. 创建要切换的组件  标签+样式
    2. 引入到要展示的vue文件内,注册
    3. 变量  承载要显示的组件名
    4. 设置挂载点  <component :is="变量"></component>
    5. 点击按钮 切换comName值为要显示的组件名
*/
import UserName from './components/UserName.vue'
import UserInfo from './components/UserInfo.vue'
export default {
  data() {
    return {
      comName: 'UserName',
    }
  },
  methods: {

  },
  components: {
    UserName,
    UserInfo,
  }
}
</script>

 UserName.vue

<template>
    <div>
        <p>用户名:<input type="text"></p>
        <p>密码:<input type="password" name="" id=""></p>
    </div>
</template>

<script>
export default {
}
</script>

<style scoped></style>

UserInfo.vue

<template>
    <div>
        <p>人生格言 个人习惯</p>
    </div>
</template>

<script>
export default {

}
</script>

<style scoped></style>

缺点:要切换的组件很多时,要在根组件引入很多组件

组件动态不常用,组件路由更常用

组件缓存 

组件切换会导致组件被频繁的销毁和重新创建性能不高

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

演示:给UserName.vue 和 UserInfo.vue 注册created 和 destroyed 生命周期事件,观察创建和销毁的过程

使用 keep-alive 内置的vue组件,让动态组件缓存

语法:

        Vue内置的keep-alive组件,包裹要频繁切换的组件

App.vue

    <div style=" border: 1px solid red;">
      <!-- vue内置的keep-alive组件,把包起来的组件缓存起来 -->
      <keep-alive>
        <component :is="comName"></component>
      </keep-alive>
    </div>

补充生命周期

activated  激活时触发

deactivated  失去激活状态触发文章来源地址https://www.toymoban.com/news/detail-499923.html

<template>
    <div>
        <p>用户名:<input type="text"></p>
        <p>密码:<input type="password" name="" id=""></p>
    </div>
</template>

<script>
export default {
    created() {
        console.log('UserName创建');
    },
    destroyed() {
        console.log('UserName销毁');
    },
    // 组件缓存下 多了两个钩子函数
    activated() {
        console.log("activated");
    },
    deactivated() {
        console.log("deactivated");
    }
}
</script>

到了这里,关于动态组件、组件缓存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element+Vue实现动态表单(多个下拉框组件)

    表单的内容为巡检计划,巡检计划可以选择多个巡检点位,每个巡检点位可以选择多个设备和对应操作。 点击加号图标增加一个下拉框 减号图标删除对应下拉框 下拉框备选项目相同 点击设置动作按钮,弹出可编辑表格,可以为该巡检点位设置多个动作 表格每行内容可编 设

    2024年02月15日
    浏览(31)
  • datePicker一个或多个日期组件,如何快捷选择多个日期(时间段)

    elementUI的组件文档中没有详细说明type=\\\"dates\\\"如何快捷选择一个时间段的日期,我们可以通过picker-options参数来设置快捷选择: 通过设置变量pickerOption的值可设置快捷选择: 其中dateFormat方法是将日期格式化,getAllDate方法是获取开始和结束日期之间的全部日期,在data中定义:

    2024年02月13日
    浏览(28)
  • vue3,动态引入组件,同时动态设置组件的name,用于keep-alive缓存

    如果有两个页面逻辑大都相同,咱们想到的第一个肯定是写一个组件,然后两个路由都指向这个组件。 那如果现在多添加一个需求:两个页面在切换路由时都需要缓存数据,并且两个页面的缓存数据要求独立。 这个需求很简单:在router-view外层包裹一个keep-alive组件,指定缓

    2024年02月14日
    浏览(36)
  • vue 实现多个路由共用同一个页面组件

    这样的弊端是如果router-view里包含其他组件,切换其他组件会让其他组件也重新渲染。 这样的问题是导致切换路由会闪烁一下。因为切换后所有钩子函数都重新触发了。

    2024年02月07日
    浏览(35)
  • vue3,vite开发, 动态引入组件,同时动态设置组件的name,用于keep-alive缓存

    如果有两个页面逻辑大都相同,咱们想到的第一个肯定是写一个组件,然后两个路由都指向这个组件。 那如果现在多添加一个需求:两个页面在切换路由时都需要缓存数据,并且两个页面的缓存数据要求独立。 这个需求很简单:在router-view外层包裹一个keep-alive组件,指定缓

    2024年02月07日
    浏览(35)
  • 在react antd中动态生成多个 form表单组,包括一个动态添加/删除表单项的功能和一个提交表单的功能

    在这个示例中,我们首先使用 Form.useForm() 创建一个表单实例。接着,我们使用 Form.List 组件来动态生成多个表单项。在 Form.List 组件中,我们使用 fields.map 方法循环渲染每个表单项,并使用 Form.Item 组件包裹每个表单项。在 Form.Item 组件中,我们使用 label 属性指定标签,使用

    2024年02月15日
    浏览(47)
  • 【vue3】10-vue组件化额外知识补充(下)-动态组件-组件缓存-v-model在组件上的应用

    切换组件案例: 比如我们现在想要实现了一个功能: 点击一个tab-bar,切换不同的组件显示; 这个案例我们可以通过两种不同的实现思路来实现: 方式一 :通过v-if来判断,显示不同的组件; 方式二 :动态组件的方式; 方式一代码示例: 动态组件方式实现 动态组件是使用 component组

    2024年02月08日
    浏览(56)
  • python sqlalchemy 动态设置表名__tablename__,一个model对应多个table

    我们在上一篇中说明了,如何在.net core的efcore中动态设置表名。 本文讲述如何在sqlalchemy中动态设置表名,使多个table可以对应到一个model 表如下 code example 上述demo包含三步 在抽象模型类中定义表列 基于抽象模型构建一个模型类,并给它指定一个表名 像使用常规类一样使用构

    2024年02月14日
    浏览(32)
  • keep-alive 是 Vue 的一个内置组件,用于缓存其他组件的实例,以避免重复渲染和销毁,它可以在需要频繁切换的组件之间提供性能优化

    目录 keep-alive  使用 keep-alive 的示例代码: 手动清除组件缓存的示例代码: keep-alive 组件有以下几个优点: keep-alive 的原理: 使用 keep-alive 组件,你可以包裹需要缓存的组件,然后这些组件在切换时将会被缓存起来,而不是每次都重新创建。 使用 keep-alive 的示例代码: 我们

    2024年02月08日
    浏览(29)
  • 端口复用·一个端口多个进程使用

            在Linux当中,我们知道,每一个进程都有自己唯一的PID。而这个唯一的PID可以标识一个主机当中的唯一一个进程,今天在用modbus写通信期间遇见一个很有意思的问题。         说是有意思讲来简单,就是简单的端口占用问题,我们知道modbus是应用层的协议,但是是基

    2024年02月12日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包