前端流行框架Vue3教程:25. 组件保持存活

25. 组件保持存活

当使用<component :is="...">来在多个组件间作切换时,被切换掉的组件会被卸载。

我们可以通过 <keep-allve> 组件强制被切换掉的组件仍然保持"存活"的状态


我们先来看个例子(依然用上节课的代码改动下):

ComponentA.vue

vue 复制代码
<script>
export default {
  beforeUnmount() {
    console.log('组件销毁之前')
  },
  unmounted() {
    console.log('组件销毁完毕')
  }
};
</script>

<template>
  <h3>ComponentA</h3>
</template>

我们点击按钮,就会看到:

说明组件被卸载了。我们写点明文演示下:

vue 复制代码
<script>
export default {
  data() {
    return {
      message: "老数据"
    };
  },
  beforeUnmount() {
    console.log('组件销毁之前')
  },
  unmounted() {
    console.log('组件销毁完毕')
  }, methods: {
    updateHandle() {
      this.message = "新数据";
    }
  }
};
</script>

<template>
  <h3>ComponentA</h3>
  <p>{{ message }}</p>
  <button @click="updateHandle">更新数据</button>
</template>

我们点更新数据,A组件会变成新数据。切换组件B后,再去切回A组件,发现又变成了老数据。说明我们在切换的时候,组件被卸载了,所以加载的还是原始的数据。

那么我们怎么保持组件存活呢?(保持新数据不变)

App.vue

vue 复制代码
<script>
...
</script>
<template>
  <!-- 使用 keep-alive 组件来缓存动态组件,避免重复渲染 -->
  <keep-alive>
    <component :is="tabComponent"></component>
  </keep-alive>
  <button @click="changeHandle">切换组件</button>
</template>

此时,我们切换回A组件,就还是新数据了

相关推荐
雪芽蓝域zzs12 小时前
第 2 节:基础扩展 - 下拉弹窗常用原生属性
vue.js·elementui
扶风ff13 小时前
新品知识更新太快?用练题簿在线刷题,安排企业培训的小测与复盘
前端·学习·小程序
对空六课13 小时前
支持注意力分析的热力图工具有哪些?
前端·数据库·数据分析
Csvn15 小时前
Vue3 响应式与编译:依赖收集如何升级为节点级靶向更新
前端
星栈16 小时前
pnpm 12 升级实测
前端·javascript
Sirens.16 小时前
Java并发锁详解:六类锁策略与 synchronized 底层原理
java·前端·算法
Ai-_Man16 小时前
您您这可以把Microsofat Copilot的多个会话比如说。左侧的多个会话一次性导出吗?不是单条会话里面的多次会对话。AI导出鸭
javascript·人工智能·ai·小程序·电脑·copilot
特创数字科技17 小时前
一个纯本地运行的图片处理工具:压缩 / 裁剪 / 九宫格 / 圆角 / 滤镜 / 拼图 / 水印,终生使用
前端
IT_陈寒18 小时前
Vue的v-if和v-for混用居然是个天坑
前端·人工智能·后端
天衍四九-18 小时前
【无标题】
前端·spring boot·mysql·nginx·docker