实现缓存el-table分页大小,用户新建标签打开该页面需保持分页大小(考虑是否为嵌入式页面)
需求:每个表格的分页大小 以本地缓存的方式存到浏览器本地,然后用户下次打开的时候 获取这个本地存储的值 如果没有就用页面默认的值,如果有 则先判断是不是有效的(是) 无效用默认 有效就用这个缓存值,需要区分是否为嵌入式页面
分析:
1、存页大小的时候 需要考虑一下嵌入页面 const ancestors = location.ancestorOrigins;
如果这个数组有长度 就把第一个 拿出做隔离;比如打开页面之后 开始拼接key 比如规则页面 我就取 key=`calc_${ location.ancestorOrigins[0],}` 去取值;如果没被嵌入 location.ancestorOrigins的长度就是0 就取不到值 key就直接取`cacl_`
意思是比如 我列表嵌入到a网址 他会给a网站存一个页大小 嵌入到b网站会给b网站保持一个页大小 互不相干
2、后面我们把那个列宽度和排序字段 查询条件 也可以存到这里面,所以我们直接使用存对象的方式key:{}
直接封装工具函数(可直接复制使用)
在项目src文件夹下面的工具函数文件夹utils下 直接新建localStorageUtil.js,写入以下代码:
// 工具函数,用于存取分页大小、其他数据
export const useLocalStorageData = (keyPrefix = '', defaultData = {}) => {const getCacheKey = () => {if (location.ancestorOrigins.length) {return `${keyPrefix}${location.ancestorOrigins[0]}`;}return `${keyPrefix}`;};const getCacheData = () => {const cacheKey = getCacheKey();const cacheData = localStorage.getItem(cacheKey);if (cacheData) {return JSON.parse(cacheData);}return defaultData;};const saveCacheData = (data) => {const cacheKey = getCacheKey();localStorage.setItem(cacheKey, JSON.stringify(data));};const getData = (key) => {const cacheData = getCacheData();if (cacheData[key]!==undefined) {return cacheData[key];}return defaultData[key];};const saveData = (key, value) => {const cacheData = getCacheData();cacheData[key] = value;saveCacheData(cacheData);};// 返回需要暴露的属性和方法return {getData,saveData,};};
页面引入使用:
import { useLocalStorageData } from '@/utils/localStorageUtil.js'
const defaultPageSize = 10//默认分页大小const { getData, saveData } = useLocalStorageData('calc_', {})//列表查询方法
function getCalcRules(RuleName: string, pageSize: number, currentPage: number) {api.calcRules.getCalcRules({ RuleName: RuleName, PageSize: pageSize, Page: currentPage }).then(res => {if (res != null && res[0] != null && res[0].status == 200) {totalData.tableData = res[0].data.recordstotalData.total = res[0].data.Total}})
}// 获取分页大小
const pageSize = ref(getData('pageSize') || defaultPageSize)
const currentPage = ref(getData('currentPage') || defaultcurrentPage)const handleSizeChange = (val: number) => {saveData('pageSize', val)// 分页getCalcRules(RuleName.value, val, currentPage.value)//获取页面表格数据
}
const handleCurrentChange = (val: number) => {// 分页getCalcRules(RuleName.value, pageSize.value, val)//获取页面表格数据
}
// 获取初始页面本地数据
function getinitLocalData() {const cachedPageSize = getData('pageSize')// 如果本地缓存中不存在分页大小,则保存默认值if (cachedPageSize === undefined) {saveData('pageSize', defaultPageSize)pageSize.value = defaultPageSize} else {pageSize.value = cachedPageSize}}
onMounted(() => {getinitLocalData()// 在获取到页码和页大小后,调用 getCalcRules 方法获取页面数据getCalcRules(RuleName.value, pageSize.value, currentPage.value)
})
如果以后还有表格搜索条件等数据需要缓存,可以按照上面关于pagesize的缓存和提取的方式进行缓存和提取
相关文章:
实现缓存el-table分页大小,用户新建标签打开该页面需保持分页大小(考虑是否为嵌入式页面)
需求:每个表格的分页大小 以本地缓存的方式存到浏览器本地,然后用户下次打开的时候 获取这个本地存储的值 如果没有就用页面默认的值,如果有 则先判断是不是有效的(是) 无效用默认 有效就用这个缓存值,需要区分是否为嵌入式页面 分析…...

056B R包ENMeval教程-基于R包ENMeval对MaxEnt模型优化调参和结果评价制图(更新)
056B-1 资料下载 056B-2 R包ENMeval在MaxEnt模型优化调参中的经典案例解读 056B-3 R软件和R包ENMeval工具包安装 056B-4 R软件和R包ENMeval安装报错解决办法 056B-5 环境数据格式要求和处理流程 056B-6 分布数据格式要求和处理流程 056B-7 基于R包ENMeval对MaxEnt模型优化…...

MySQL_数据库的DDL语句(表的创建与修改)
DDL 数据库操作 查看当前有哪些数据库 SHOW databases;#查看哪些数据库查询当前数据库 SELECT database();创建数据库 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序 规则 ] ;创建一个sycoder数据库, 使用数据库默认的字符集 CREATE…...
常见面试题:字节序判别和转换
在计算机中,字节序指的是多字节数据的存储顺序。最常见的字节序有两种:大端字节序(Big-Endian)和小端字节序(Little-Endian)。 大端字节序是指最高有效位(Most Significant Bit,简称…...
Maxwell与canal工具对比
Maxwell和Canal是两种不同的数据同步工具,都是在数据迁移、数据同步、数据分发等领域发挥作用的工具,但是它们之间存在一些差异。 Maxwell Maxwell是一种开源的MySQL数据库同步工具,它可以将MySQL数据库的binlog转化为JSON格式,…...
SpringBoot——如何运行Python脚本并返回数据
文章目录 运行python脚本并输出如何输入参数 运行python脚本并输出 要让Python脚本返回数据给调用它的Java代码,你可以在Python脚本中使用打印或输出函数将结果输出到标准输出(stdout)中。 以下是一个示例,在Python脚本中返回数…...

在生产环境中部署Elasticsearch:最佳实践和故障排除技巧———索引与数据上传(二)
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...

R语言初学者书籍推荐
Home | Bookdown 这个网站上有很多R语言的书籍,并且一直在更新,阅读起来没有难度。 今天搜索材料的时候,检索到下面这本书: 有输入,才会有输出。...
Taro+Vue3,点击按钮把另一个页面分享出去
useShareAppMessage 监听用户点击页面内转发按钮(Button 组件 openTypeshare)或右上角菜单“转发”按钮的行为,并自定义转发内容。等同于 onShareAppMessage 页面生命周期钩子。 使用时,必须为页面配置 enableShareAppMessage…...
CSS基础:学习CSS样式的基本语法和应用,了解如何美化网页。
CSS(层叠样式表)是一种用于描述网页上元素(例如文字、图像、背景等)外观和布局的样式语言。通过使用CSS,您可以控制和改变网页的外观,使其更具吸引力和易于使用。 下面是一些CSS基础知识和常用的语法&#…...

MySQL语句总和之表数据操作(增删改查)
目录 1、增加 insert into 表 (字段1, 字段3, 字段5) values(value1, value2, value3) insert into 表 [(字段1, 字段2, 字段3....)] values(value1, value2,value3.....)[,(value1, value2, value3....) .....] i…...

HDFS中snapshot快照机制
HDFS中snapshot快照机制 介绍作用功能实现相关命令和操作相关命令 介绍 snapshot是数据存储的某一时刻的状态记录,备份(backup)则是数据存储的某一个时刻的副本HDFS snapshot快照是整个文件系统或某个目录在某个时刻的镜像,该镜像…...

YOLOv5基础知识入门(5)— 损失函数(IoU、GIoU、DIoU、CIoU和EIoU)
前言:Hello大家好,我是小哥谈。使用YOLOv5训练模型阶段,需要用到损失函数。损失函数是用来衡量模型预测值和真实值不一样的程度,极大程度上决定了模型的性能。本节就给大家介绍IoU系列损失函数,希望大家学习之后能够有…...

Centos7源码安装redis
1、下载redis Index of /releases/ 2、解压redis tar -xvf redis-6.2.9.tar.gz 3、进入解压后的目录 cd redis-6.2.9/4、指定内存分配器为 libc make MALLOClibc 5、进入src目录,安装 cd src && make install6、运行 ./redis-server 7、添加开机…...

[静态时序分析简明教程(九)]多周期路径set_multicycle_path
静态时序分析简明教程-多周期路径 一、写在前面1.1 快速导航链接 二、多周期路径2.1 多周期路径的SDC命令2.2 路径常规约束2.3 建立/保持规格2.4 位移量2.5 多时钟周期案例 三、总结 一、写在前面 一个数字芯片工程师的核心竞争力是什么?不同的工程师可能给出不同的…...
Unity学习笔记--使用 C# 开发一个 LRU
目录 什么是 LRULRU 核心思想代码实现一:双向链表 哈希表分析代码实现二:OrderedDictionary分析项目案例预告结尾 什么是 LRU 在计算机系统中,LRU(Least Recently Used,最近最少使用)是一种缓存置换算法。…...

【一】初步认识数据库
数据库概览数据库 缘起表(Table)的理解用表来定义数据库数据库系统的理解概念层次的理解实例层次的理解 数据库管理系统的理解从用户角度看从系统实现角度看典型的数据库管理系统 数据库语言数据库定义、操纵、控制语言数据库语言 VS 高级语言 内容回顾练习 数据库概览 走马观…...
HTML <section> 标签
实例 文档中的区段,解释了 PRC: <section><h1>PRC</h1><p>The Peoples Republic of China was born in 1949...</p> </section>定义和用法 <section> 标签定义文档中的节(section、区段&#x…...

PHP 之房贷计算器、组合贷
一、等额本金 // (等额本金) //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…...

解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 博主在工作之余开始进行自动化测试平台的开发,虽然已经996一个月了但是还是在使劲挤时间做这件事情,目前平台使用前端框架vu…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...