element-ui分页组件在返回时总是显示第一页的问题的完美决绝方案

  • 问题演示:
    在这里插入图片描述
    在element-ui列表渲染数据,底下有分页,点击查看可以跳转到详情的组件,详情的组件有一个返回键,现在的问题是每一次点击回到列表页,都是显示的第一页,也就是说我在列表页看到第三页的数据,随机点进去一个查看,返回的时候列表页又显示的第一页的数据,这样用户体验极其不好,部分代码如下:
    在这里插入图片描述
    在这里插入图片描述
  • 期望的效果:当用户点击第三页,再点击查看,点击返回的时候,列表还是停留在第三页上。
    -解决方案:用LocalSotrage或者SessionStorage将在列表页点击的currentPage(当前页)的数值保存在本地,在返回的时候,从本地取出这个值,赋给表格中,这里我们用的是LocalSotrage。
    在这里插入图片描述
    在这里插入图片描述
    -依然存在问题:点击列表页第三页,进入详情页返回值后,数据是第三页的数据,但是页码是在第一页。
    在这里插入图片描述
    -分析原因:我们返回当前页面取得总条数pageTotal的之前,element-ui的分页组件已经在页面加载完毕,当时的pageTotal绑定的是data里面初始化的数据0,所以当总条数为0的时候,分页组件的页码默认为1。并且当pageTotal在created生命周期里取得数据后,分页组件也不会刷新。所以这就导致,页面内容正确,但是页码高亮依旧是第一页。
    -解决办法:我们需要在created之后刷新这个分页组件或者让分页组件的html后于created之后加载到页面。再次刷新这个分页组件是不现实的,我们选择在created之后加载分页组件。具体办法就是使用v-if。在pageTotal不为data里面给的初始值0的时候,才让这段html加载到页面。
    在这里插入图片描述
    -修改后效果演示:
    在这里插入图片描述
    这里我们看到问题已经完美解决了,这里为什么用的是v-if而不是v-show?可以自行查询v-if和v-show的区别~

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/106634120