当前位置: 首页 > news >正文

实现缓存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分页大小,用户新建标签打开该页面需保持分页大小(考虑是否为嵌入式页面)

需求:每个表格的分页大小 以本地缓存的方式存到浏览器本地,然后用户下次打开的时候 获取这个本地存储的值 如果没有就用页面默认的值,如果有 则先判断是不是有效的(是) 无效用默认 有效就用这个缓存值,需要区分是否为嵌入式页面 分析&#xf…...

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到英雄&#xff…...

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> 标签

实例 文档中的区段&#xff0c;解释了 PRC&#xff1a; <section><h1>PRC</h1><p>The Peoples Republic of China was born in 1949...</p> </section>定义和用法 <section> 标签定义文档中的节&#xff08;section、区段&#x…...

PHP 之房贷计算器、组合贷

一、等额本金 // &#xff08;等额本金&#xff09; //$loanAmount>贷款金额 //$loanPeriod>贷款年限 //$interestRate>贷款利息 function calculateEqualPrincipalPayment($loanAmount, $loanPeriod, $interestRate) {$monthlyPrincipal $loanAmount / ($loanPerio…...

解决Vue+Element UI使用表单rules国际化时From表单验证信息不能实时更新

说明&#xff1a;该篇博客是博主一字一码编写的&#xff0c;实属不易&#xff0c;请尊重原创&#xff0c;谢谢大家&#xff01; 博主在工作之余开始进行自动化测试平台的开发&#xff0c;虽然已经996一个月了但是还是在使劲挤时间做这件事情&#xff0c;目前平台使用前端框架vu…...

YOLO12开源大模型:支持ONNX/Triton导出适配生产推理引擎

YOLO12开源大模型&#xff1a;支持ONNX/Triton导出适配生产推理引擎 1. YOLO12模型概述 YOLO12是2025年最新发布的目标检测模型&#xff0c;由美国纽约州立大学布法罗分校和中国科学院大学联合研发。这个模型带来了革命性的突破——采用了以注意力为中心的架构&#xff0c;在…...

别再死记硬背了!用Python+NumPy手搓一个64QAM调制解调器(附完整代码)

用PythonNumPy从零实现64QAM调制解调系统&#xff1a;原理到代码实战 在无线通信系统中&#xff0c;调制解调技术直接影响着数据传输的效率和可靠性。64QAM作为高阶调制方式&#xff0c;能够在有限带宽内传输更多数据&#xff0c;但同时也对系统设计提出了更高要求。本文将带您…...

79万条中文医疗对话数据集:构建智能医疗AI的技术基石

79万条中文医疗对话数据集&#xff1a;构建智能医疗AI的技术基石 【免费下载链接】Chinese-medical-dialogue-data Chinese medical dialogue data 中文医疗对话数据集 项目地址: https://gitcode.com/gh_mirrors/ch/Chinese-medical-dialogue-data 在医疗人工智能快速发…...

深入浅出聊5G DMRS:从Gold序列到ZC序列,如何为你的上行传输选择最佳参考信号?

5G上行DMRS序列选型实战&#xff1a;从理论特性到工程决策的黄金法则 在5G NR上行调度中&#xff0c;解调参考信号(DMRS)的设计直接影响着信道估计精度和系统性能。面对Type 1(ZC序列)和Type 2(Gold序列)两种DMRS序列选项&#xff0c;以及transform precoding启用/禁用两种模式…...

VCS编译选项+vcs+initreg+random实战:一个UVM测试平台的完整配置与效果验证

VCS编译选项vcsinitregrandom实战&#xff1a;UVM测试平台的高级配置与验证策略 在芯片验证领域&#xff0c;仿真初始状态的确定性直接影响测试结果的可信度。想象一下这样的场景&#xff1a;当你精心设计的UVM测试平台在回归测试中突然出现不一致的行为&#xff0c;而问题根源…...

企业微信智能客服源码首选 – 支持人工转接+知识库,立即获取

温馨提示&#xff1a;文末有资源获取方式在企业数字化转型的浪潮中&#xff0c;客户服务效率直接影响用户留存。今天分享一套基于PHP开发的智能客服系统源码&#xff0c;实测稳定&#xff0c;特别适合需要集成企业微信的团队。为什么推荐这套源码&#xff1f;1. 核心功能一览智…...

从零到一:基于Cadence的MOS共源放大器仿真与性能调优实战

1. 初识MOS共源放大器&#xff1a;从理论到仿真实践 第一次接触MOS共源放大器时&#xff0c;我被它简洁的结构和强大的信号放大能力所吸引。作为模拟电路设计中最基础的放大器结构之一&#xff0c;共源放大器就像是一个"信号放大器"&#xff0c;能够将微弱的输入信号…...

从Java转行大模型应用,基于 BLIP 的图生文实战案例

一、项目简介 BLIP 是 Salesforce 开源的多模态视觉语言模型&#xff0c;兼顾图像理解、图文检索、图像字幕&#xff08;Image Caption&#xff09;、VQA 视觉问答等能力。本案例实现&#xff1a;输入任意图片 → 自动生成精准自然的中文 / 英文描述文案&#xff0c;轻量化部署…...

TinyObjLoader vs. Assimp:C++游戏开发中,轻量级与全能型模型加载库该怎么选?

TinyObjLoader vs. Assimp&#xff1a;C游戏开发中的模型加载库深度抉择 当你在C游戏开发中需要加载3D模型时&#xff0c;选择正确的库可以节省数周甚至数月的开发时间。TinyObjLoader和Assimp代表了两种截然不同的设计哲学&#xff1a;前者是专注OBJ格式的极简主义实现&#x…...

WeChatPad:一键解锁微信双设备登录,告别单设备限制烦恼

WeChatPad&#xff1a;一键解锁微信双设备登录&#xff0c;告别单设备限制烦恼 【免费下载链接】WeChatPad 强制使用微信平板模式 项目地址: https://gitcode.com/gh_mirrors/we/WeChatPad 还在为微信无法同时在手机和平板上登录而烦恼吗&#xff1f;WeChatPad为你带来革…...