vue开启keep-alive缓存时,关于子组件上使用:key=“id“的问题以及解决方案

开启keep-alive缓存时,第一次进入某功能时,created -> mounted -> activated,退出时触发 deactivated,

当再次进入时,只触发activated

vue开启keep-alive缓存时(路由meta.noCache不为true),组件上存在:key="id"会有两个问题:

1、切换tag,会触发id的变更,再次切回来时,将会触发表格销毁重建,重新请求数据,局部刷新表格的缓存丢失;

2、致命错误,修改URL的id时,缓存之前有数据,子组件销毁重建,请求接口也有数据,但是因为keep-alive缓存了组件实例而不是组件的数据,表格的数据丢失;

特定场景下,必须使用:key="id"时,可以考虑下面的两个方式

1、:key="formData.id + ''";初始化时,formData = { id: this.id, } ------ keep-alive缓存activated时,不会重新请求

2、:key="timeStap",结合activated、deactivated ------ ------ keep-alive缓存activated时,会重新请求

activated() {

if (this.fromKeepAlive) { //* 来自keep-alive缓存的组件实例

this.timeStap = new Date().getTime()

}

}

deactivated() {

this.fromKeepAlive = true;

}

相关推荐
AKclown12 分钟前
基于Monaco的diffEditor实现内容对比
前端·vue.js·react.js
大G的笔记本20 分钟前
高频 Redis 面试题答案解析
数据库·redis·缓存
摆烂工程师25 分钟前
(2025年11月)开发了 ChatGPT 导出聊天记录的插件,ChatGPT Free、Plus、Business、Team 等用户都可用
前端·后端·程序员
gongzemin35 分钟前
使用阿里云ECS部署前端应用
前端·vue.js·后端
用户411800341534137 分钟前
Flutter课题汇报
前端
环信40 分钟前
实战教程|快速上线音视频通话:手把手教你实现呼叫与接听全流程
前端
Dgua40 分钟前
✨TypeScript快速入门第一篇:从基础到 any、unknown、never 的实战解析
前端
用户97141718142741 分钟前
前端开发中的跨域问题:Vite 开发环境配置指南
vue.js·vite
海云前端141 分钟前
Vue3 大屏项目投屏功能开发:多显示器适配实践
前端
技术小丁1 小时前
使用 HTML + JavaScript 实现酒店订房日期选择器(附完整源码)
前端·javascript