IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 如何保存el-pagination组件的分页状态。 -> 正文阅读

[JavaScript知识库]如何保存el-pagination组件的分页状态。

一文细解如何保存组件的分页状态。



背景

使用element-plus的分页组件搭建页面的时候,经常会出现这样一种情况:分页为列表页,当从列表页点击某一项进入详情页再返回后,发现分页页数会回到默认值第1页,而不是会停留在跳转前所在的分页目录页,为了优化用户的使用体验,则应该保存好这个当前的分页状态。


一、实现原理

利用sessionStorage:
查看官网文档,可以看到分页组件有着一些相应的事件:在这里插入图片描述
也就是说,当页码发生变化的时候,会触发此事件,这也就为实现保存分页状态提供了一个思路:可以在每次切换页码的时候利用sessionStorage保存当前的页数,在这里我利用当前路由为键,当前页码为值。
当用户从列表页——>详情页——>列表页,在列表页的mounted生命周期则可以获取当前存在sessionStorage中的页码数值,并赋值给分页组件绑定的页码变量,不过这里还有两个点需要注意:一是在列表页的时候什么时候去获取sessionStorage的值 二是我们的sessionStorage值应该在什么时候清空。先来解释第一个问题:什么时候获取?进入分页列表页有两种情况:1是从详情页返回,2是初次进入列表页;毋庸置疑,第一种情况下才需要获取sessionStorage中的值,第二种情况并不需要获取之歌值。那如何判断是从详情页返回的呢?可以在进入详情页的时候,存储一个seeion,来标识,再返回列表页的时候则可以判断,该session是否存在,存在即去读取这个当前页码的值,反之则不需要读取;接下来再来解决第二个问题:什么时候清空?当我们在离开当前页面的时候,就需要销毁详情页的标识session值,以防止重新进入新的列表页时 直接获取当前的session值,使分页误跳转。

二、代码展示

1.分页组件模板

 <ElPagination
        background
        layout="prev, pager, next"
        :total="pagination.total"
        :page-size="pagination.pageSize"
        :current-page="pagination.currentPage"
        :default-current-page="currentPage"
        @current-change="pageChange($event)"
      >
      </ElPagination>

$event就是当前进行跳转的码数。
在mounted生命周期中完成的代码如下:

const getLastPage = () => {
  // 当从详情页返回的时候,先获取详情页中存下来的detall标识,在列表页中,把获取到的分页页码重新赋值赋值,用以返回前的页面,保持不变
  if (sessionStorage.getItem('changepage-detail') || sessionStorage.getItem('changepage-draft')) {
    // 如果有这个就读取缓存里面的数据
    currentPage.value = sessionStorage.getItem(route.path) ? Number(sessionStorage.getItem(route.path)) : ref(1);

    pagination.params.current_page = currentPage.value;
  } else {
    currentPage.value = 1;
    // 从其他页面第一次进入列表页,清掉缓存里面的数据
    pagination.params.current_page = 1;
    sessionStorage.removeItem(route.path);
  }
};

详情页添加detail标识

 sessionStorage.setItem('changepage-detail', 'detail');

卸载时销毁detail标识

onUnmounted(() => {
  sessionStorage.removeItem('changepage-detail');
  sessionStorage.removeItem('changepage-draft');
});
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:43:36  更:2022-09-30 00:45:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 15:31:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码