【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

相关推荐
小淮AI5 小时前
从“刷题”到“追问”:AI课堂正在重塑哪些学习旧习惯?
人工智能·学习
wixzjsh7 小时前
TCP通信与HTTP协议学习笔记:粘包、三次握手、四次挥手与C/S、B/S模型
学习·tcp/ip·http
ZhiMuZhiLing7 小时前
拓客软件学习成本实测方法论:从注册到出第一批名单要多久
学习·流量运营·用户运营
程序员大雄学编程7 小时前
微积分46. 无穷级数四大核心性质:从理论到实践的全方位解析
python·学习·微积分·学习工具
指针常量9 小时前
【RL系列文章】难样本学习等
学习·大语言模型·rl·后训练
wuyk55510 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
一条破秋裤11 小时前
STM32 学习笔记:PWM 驱动 LED 呼吸灯与舵机代码
笔记·stm32·学习
kyrie_sakura12 小时前
python学习笔记11 -- 进程和线程
笔记·python·学习
高亦真13 小时前
今天是学习嵌入式的第34天
linux·学习·算法
2501_9318197013 小时前
桂柳方言标注公司错误标注溯源追踪体系搭建诉求落地 桂柳方言标注公司学习信实翻译全链路追踪技术
学习·语音识别