Vue详情页回列表页保存原数据与位置。

Posted niubenbit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue详情页回列表页保存原数据与位置。相关的知识,希望对你有一定的参考价值。

列表页关键代码

mounted() 
       
        //非从详情页返回时正常加载数据
        if (!this.$route.meta.isBack) 
            //执行加载数据的方法
           //重新加载页面
         else 
            // this.onFetching = true;
            this.curPage = sessionStorage.getItem(‘curPage‘);
            //存储分页第几页,用于返回列表页继续可以分页
    
            ...
        
        //执行完初始化isBack
        this.$route.meta.isBack = false 
    ,
    beforeRouteLeave(to, from, next) 
        if(to.name == ‘bbs_detail‘) 
            //跳转为详情页,就保存当前滚动的页数
            sessionStorage.setItem(‘curPage‘, this.curPage);
         else 
           //跳转为非详情页,滚动的页数归1
            sessionStorage.setItem(‘curPage‘, 1);
        
        next();
    ,

main.js

// 返回定位
router.afterEach((to,from) => 
    let path = to.path;
    //判断需要定位的路由地址
    if(path == ‘/bbs‘)
                //获取储存起来的位置
        let scrollTop = sessionStorage.getItem(‘scrollTop‘);
        if(scrollTop)
            setTimeout(()=>
                //页面渲染完成后,在滚动,位置才是正确的,所以加个延迟
                document.getElementById(‘app‘).scrollTop = scrollTop; 
                sessionStorage.setItem(‘scrollTop‘,0);   //定位后还原储存位置信息
            ,300)
        
    else
        //除了特定地址,其他的都返回顶部
        
        sessionStorage.setItem(‘scrollTop‘, document.getElementById(‘app‘).scrollTop*1);//储存位置

        document.getElementById(‘app‘).scrollTop = 0; 
    
)

 

以上是关于Vue详情页回列表页保存原数据与位置。的主要内容,如果未能解决你的问题,请参考以下文章

React 中的状态自动保存(KeepAlive)

如何实现 React 中的状态自动保存?

vue-scroller记录滚动位置

使用keepAlive对上下拉刷新列表数据 和 滚动位置细节处理 - vue

vue-scroller记录滚动位置的示例代码

vue keep-alive 实现详情返回列表保留页面数据