分页记忆:从列表页进入详情页,返回后维持进入前的状态

352 阅读2分钟

利用sessionStorage存储页码和查询条件

  1. 定义接收所需上传sessionStorage数据的变量
steup(){
	const requestParam = ref({}) 
}
  1. 初始化数据时,在列表数据接口请求之前,给变量requestParam赋上所需上传sessionStorage的值
// 实时更新需要存入sessionStorage的数据<br>
requestParam.value={
	ProjectName: input2.value,
	pageSize: limit.value,
	pageNum: currPage.value
}
  1. 在所有的跳转到详情页的方法中将数据上传sessionStorage
 // 点击查看按钮
 const issee = val => {
     sessionStorage.setItem("path", JSON.stringify(val));
     // 点击查看时,将数据上传sessionStorage
     sessionStorage.setItem('SESSION_PAGE_EXCECUTION', requestParam.value)
     router.push({
         name: "details",
         params: val
     });
 };
 
 【sessionStorage.setItem("名", 值)】:上传数据到sessionStorage
 【JSON.stringify()】:将对象转换成字符串上传sessionStorage(对象必须转格式,否则不能上传)
 【SESSION_PAGE_EXCECUTION】:相当于变量名,可任意
  1. 初始化数据时,在列表数据接口请求、给变量requestParam赋值之前,定义常量接收存入sessionStorage的值,并通过判断sessionStorage中是否存在之前存入的值,来确定是否给页码、每页条数、查询条件等变量重新赋值
// 接收sessionStorage中的SESSION_PAGE_EXCECUTION
const sessionRequest = JSON.parse(sessionStorage.getItem('SESSION_PAGE_EXCECUTION')) === null ? {} : JSON.parse(sessionStorage.getItem('SESSION_PAGE_EXCECUTION'))

// 判断sessionRequest是否有接收到sessionStorage中的SESSION_PAGE_EXCECUTION,有值才将currPage,limit,input2赋值为SESSION_PAGE_EXCECUTION中的数据
if(Object.keys(sessionRequest).length){
	currPage.value = sessionRequest.pageNum ? sessionRequest.pageNum : 1;
	limit.value=sessionRequest.pageSize ? sessionRequest.pageSize : 10
	input2.value=sessionRequest.ProjectName ? sessionRequest.ProjectName : ''
}

【sessionStorage.getItem("名")】:从sessionStorage中获取数据
【JSON.parse()】:将被转换成字符串上传的对象还原,在从sessionStorage中取值的时候进行
【Object.keys()】:返回⼀个由⼀个给定对象的⾃⾝可枚举属性组成的数组,数组中属性名的排列顺序和使用⽤ for...in 循环遍历该对象时返回的顺序⼀致
传⼊对象, 返回 包含对象可枚举属性和⽅法的数组:
var obj = {'name''xiaoming''age'18};
console.log(Object.keys(obj)); // ["name","age"]

Snipaste_2022-06-06_09-59-58.png

  1. 当页码发生变化后,清除sessionStorage中所缓存的数据
//要求:需要在完成接口请求之后再清除
//原因:清除SESSION_PAGE_EXCECUTION对后续页码变化的影响
const handleCurrentChange = val => {
	currPage.value = val;
	itemlist();
	sessionStorage.removeItem('SESSION_PAGE_EXCECUTION')
};
  1. 在点击【搜索】或【重置】按钮时,需要对页码和每页信息条数进行重新赋值(赋默认值),并清除sessionStorage中缓存的SESSION_PAGE_EXCECUTION
const isselect = () => {
	// 点击搜索的时候,需要重置页码和每页显示信息条数,并清除sessionStorage中存入的SESSION_PAGE_EXCECUTION
	currPage.value=1
	limit.value=10
	sessionStorage.removeItem('SESSION_PAGE_EXCECUTION')
	itemlist();
};