17:vue3 组件保持存活状态
<KeepAlive>
是一个内置组件,它的功能是在多个组件间动态切换时缓存被移除的组件实例
1、不使用KeepAlive,组件不保持存活,验证如下:
A组件
1 <template> 2 <h3>ComponentA</h3> 3 <p>{{ message }}</p> 4 <button @click="updateHandle">更新数据</button> 5 </template> 6 <script> 7 export default{ 8 data(){ 9 return { 10 message:"老数据" 11 } 12 }, 13 beforeUnmount(){ 14 console.log("组件卸载之前"); 15 }, 16 unmounted(){ 17 console.log("组件卸载之后"); 18 }, 19 methods: { 20 updateHandle(){ 21 this.message="新数据" 22 } 23 } 24 } 25 </script>
B组件
1 <template> 2 <h3>ComponentB</h3> 3 </template>
App.vue
1 <template> 2 <h3>动态组件(A、B两个组件动态切换)</h3> 3 <component :is="tabComponent"></component> 4 <button @click="changeHandle">切换组件</button> 5 </template> 6 7 <script> 8 import ComponentA from "./components/ComponentA.vue" 9 import ComponentB from "./components/ComponentB.vue" 10 11 export default{ 12 data(){ 13 return{ 14 tabComponent:"ComponentA" 15 } 16 }, 17 methods:{ 18 changeHandle(){ 19 this.tabComponent=this.tabComponent=="ComponentA"?"ComponentB":"ComponentA" 20 } 21 }, 22 components:{ 23 ComponentA, 24 ComponentB 25 } 26 27 } 28 </script>
验证结果
(1)初始加载
(2)点击更新数据按钮后
(3)点击切换组件按钮后,加载B组件,同时打印组件卸载log
(4)再点击切换按钮,切换回A组件,赋值显示默认值
2、使用KeepAlive,组件保持存活
App.vue组件显示用KeepAlive包住后
验证结果
(1)初始加载
(2)点击更新数据按钮
(3)切换组件,无组件卸载log
(4)切换回A,依然显示新数据
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理