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

【Vue3基础】组件保持存活、异步加载组件

一、组件保持存活

1、需求描述

点击按钮跳转到其他组件后,原组件不会被销毁

2、知识整理

1)组件生命周期

创建期:beforeCreate、created

挂载期:beforeMount、mounted

更新期:beforeUpdate、updated

销毁期:beforeUnmount、unmounted

2)保持组件存活keep-alive

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

3)实现异步组件加载

defineAsyncComponent

3、代码演示

1)文件

 2)App.vue文件

<template><keep-alive><component :is="tabComponent"></component></keep-alive><button @click="changeHandle">切换按钮</button>
</template>
<script>
import ComponentA from "./components/ComponentA.vue";
import ComponentB from "./components/ComponentB.vue";
export default{data(){return{tabComponent:"ComponentA"}},components: { ComponentA,ComponentB},methods:{changeHandle(){this.tabComponent=this.tabComponent=="ComponentA"?"ComponentB":"ComponentA"}}
}
</script>

3)ComponentA.vue文件

<template><h3>ComponentA</h3><p>{{ message }}</p><button @click="updateHandle">更新数据</button>
</template>
<script>
export default{data(){return {message:"老数据"}},beforeUnmount(){console.log("组件卸载之前");},unmounted(){console.log("组件卸载之后");},methods:{updateHandle(){this.message="新数据"}}
}
</script>

4)ComponentB.vue文件

<template><h3>ComponentB</h3>
</template>
<script></script>

5、效果展示

1)打开浏览器

 2)点击“更新数据”按钮,“老数据”将变为“新数据”

3)点击“切换按钮”,跳转到组件B中

4)再点击“切换按钮”,跳转回组件A,仍保持显示“新数据”

>>>

二、 异步加载组件

1、关键代码 App.vue文件

<script>
import ComponentA from "./components/ComponentA.vue";
//import ComponentB from "./components/ComponentB.vue";
//异步加载B组件
import { defineAsyncComponent } from "vue";
const ComponentB=defineAsyncComponent(()=>import("./components/ComponentB.vue"))

2、效果展示

1)登录浏览器 ,B组件未被加载

2)点击切换按钮后,才加载B组件

>

三、学习链接

https://www.bilibili.com/video/BV1Rs4y127j8?p=37&spm_id_from=pageDriver&vd_source=841fee104972680a6cac4dbdbf144b50

http://www.lryc.cn/news/106430.html

相关文章:

  • 在 3ds Max 中使用相机映射将静止图像转换为实时素材
  • 如何使用GIL解决Python多线程性能瓶颈
  • k8s概念-深入pod
  • Web服务器实验案例
  • 预警 项目经验BUG
  • 基于RFID技术的猪舍门读卡器
  • 亚马逊店铺的回款周期是多久?
  • 剑指offer19.正则表达式
  • Mac Navicat 16试用脚本
  • 什么是 webpack?
  • #B. 费解的开关
  • Docker离线安装
  • React高阶学习(二)
  • C语言中的字符串输入操作详解
  • C高级 DAY1
  • centos7 默认路由顺序调整(IPV4_ROUTE_METRIC)
  • STM32 DMA学习
  • 32.利用fmincon 解决 最小费用问题(matlab程序)
  • Delphi 开发的QR二维码生成工具,开箱即用
  • Springboot使用AOP编程简介
  • Android性能优化—卡顿分析与布局优化
  • 【二分+滑动窗口优化DP】CF883 I
  • 4.netty源码分析
  • 性能优化点
  • leetcode301. 删除无效的括号(java)
  • 快速制作美容行业预约小程序
  • Golang之路---03 面向对象——结构体
  • 【网络编程】poll
  • 配置VS Code 使其支持vue项目断点调试
  • 第一百零一回 如何在组件树之间共享数据