前端对页面数据进行缓存

ops/2024/12/26 0:10:23/

页面录入信息,退出且未提交状态下,前端对页面数据进行存储

前端做缓存,一般放在local、session和cookies里面,但是都有大小限制,如果页面东西多,比如有上传的图片、视频,浏览器会抛出一个QuotaExceededError错误。所以最后采用了vuex进行存储
思路:进入页面时,会请求接口获取数据,判断该条数据是否在vuex里面进行存储,如果有,将vuex中的值赋值给form,如果没有,将接口返回的值赋值给form。提交时,在vuex中清楚该数据。点击返回按钮时,在生命周期钩子beforeDestory中对页面数据进行存储
arrList:this.$store.state.cachedData //vuex 缓存的页面数据
form:{} // 页面v-model的数据
id:当前页面数据的唯一标识
 import { mapState, mapMutations } from "vuex";  computed: {...mapState(["cachedData"]),},
methods:{...mapMutations(["setCachedData"])
}
  beforeDestroy() {//有多条数据,根据唯一标识id进行存取和清除let dataToCache = {id: this.id,data: JSON.stringify(this.form),};const index = this.arrList.findIndex((item) => item.id == this.id);if (index != -1) {this.arrList[index] = dataToCache;} else {this.arrList.push(dataToCache);}this.setCachedData(this.arrList);},
mounted(){this.getPageDate()
},
methods:{getPageDate(){//都接口,获取当前页面数据,判断缓存中是否有该条数据const index = this.arrList.findIndex((item) => item.id == this.id);if (index !== -1) {this.form = JSON.parse(this.$store.state.cachedData[index].data);} else {this.form = res.data.list}},submit(){//走接口,提交成功时,进行清除const index = this.arrList.findIndex((item) => item.id == this.id);this.arrList.splice(index, 1);this.setCachedData(this.arrList);}
}


http://www.ppmy.cn/ops/144967.html

相关文章

【AIStarter:项目管理平台】Krita 5.2.6 + AI 1.29 + ComfyUI 插件:创作与效率的完美结合

引言 在数字艺术创作的世界里,工具的选择往往决定了作品的质量和创作的效率。对于追求高效与便捷的艺术家们来说,Krita 5.2.6、AI 1.29 和 ComfyUI 插件的组合无疑是一套理想的解决方案。这套集成了最新技术的软件套装,不仅提供了强大的绘图…

用友-友数聚科技CPAS审计管理系统V4 downPlugs存在任意文件下载漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享

作者 | 老杨 出品 | 上海开源智造软件有限公司(OSCG) 概述 在本文中,我们将深入研讨如何于 Odoo 18 中构建 JavaScript(JS)对话框或弹出窗口。对话框乃是展现重要讯息、确认用户操作以及警示用户留意警告或错误的行…

K8s - openeuler2203SP1安装 K8s + flannel

环境说明 [rootmaster-1 ~]# uname -a Linux master-1 5.10.0-136.12.0.86.oe2203sp1.x86_64 #1 SMP Tue Dec 27 17:50:15 CST 2022 x86_64 x86_64 x86_64 GNU/Linux安装过程 1、安装 containerd 下载 tar 包 # 确保没有使用官方仓库的containerd [rootlocalhost ~]# yum rem…

如何处理对象的创建和销毁?

概念 处理对象的创建和销毁是软件开发中的核心问题,尤其是在确保资源管理、性能优化和代码清晰性方面。以下是一些常用的方法和设计模式,用于有效管理对象的创建和销毁。 方法 构造函数和析构函数 在C等语言中,使用构造函数和析构函数是最…

自动屏蔽频繁访问IP,提升服务器安全:实战脚本解析

在当前的数字化时代,服务器安全成为了一个不可忽视的重要环节。无论是企业网站还是个人博客,都面临着来自各方的潜在威胁。其中,恶意访问和频繁登录尝试更是让管理员头疼不已。本文将为大家介绍如何通过脚本自动屏蔽频繁访问和尝试SSH登录的I…

ubuntu,自动休眠后,程序自动暂停。如何破?

昨天挂机想让出图,今天一看,不错,有一张。原来是机器休眠了,暂停了。 在Ubuntu系统中,当计算机进入休眠状态后,所有正在运行的应用程序都会被暂停,包括图形处理程序。为了避免这种情况&#xf…

Docker环境下数据库持久化与多实例扩展实践指南

引言 在Docker容器化技术中,数据库的持久化和多实例管理是两个关键问题。本文将详细介绍如何在Docker中实现数据库的持久化,并有效地管理多个数据库实例。 数据库持久化实现步骤 1. 创建Docker卷 Docker卷是实现数据持久化的关键。以下是创建Docker卷…