vue 记录滚动位置_vue-scroller记录滚动位置

问题描述:

列表页进入详情页,或者tab页切换,然后再返回列表页,希望能切换到之前滚动位置

解决问题思路:

切换到其他页面前记录位置,返回列表页的时候返回位置。这就需要借助vue-router的beforeRouteEnter和beforeRouteLeave这两个钩子去实现.

还有一种更简单粗暴的方法, vue-scroller.min.js源码中添加宽高不为零判断,实现方式见评论,是最近代码优化的时候发现的。

代码部分:

beforeRouteEnter(to,from,next){

if(!sessionStorage.askPositon || from.path == '/'){//当前页面刷新不需要切换位置

sessionStorage.askPositon = '';

next();

}else{

next(vm => {

if(vm && vm.$refs.scrollerBottom){//通过vm实例访问this

setTimeout(function () {

vm.$refs.scrollerBottom.scrollTo(0, sessionStorage.askPositon, false);

},0)//同步转异步操作

}

})

}

},

beforeRouteLeave(to,from,next){//记录离开时的位置

sessionStorage.askPositon = this.$refs.scrollerBottom && this.$refs.scrollerBottom.getPosition() && this.$refs.scrollerBottom.getPosition().top;

next()

},

需要注意的点:

1.熟悉vue-router和vue-scroller的api

2.beforeRouteEnter的时候,是无法通过this去访问vue实例的,需要借助于vm

3.setTimeout 0 的使用

等下周发版的时候,我贴上链接,可以体验下效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要同时使用vue-virtual-scrollervue-seamless-scroll,你需要在你的Vue项目中安装和导入这两个库,并进行相应的配置。 首先,你需要在项目中安装vue-virtual-scrollervue-seamless-scroll。你可以使用npm或yarn来安装它们。在终端中运行以下命令: ``` npm install vue-virtual-scroller vue-seamless-scroll ``` 或 ``` yarn add vue-virtual-scroller vue-seamless-scroll ``` 安装完成后,你需要在主文件(通常是main.js)中导入vue-virtual-scrollervue-seamless-scroll的相关代码。根据引用和引用,可以看出vue-virtual-scroller的引入方式如下: ```javascript import "vue-virtual-scroller/dist/vue-virtual-scroller.css" import VueVirtualScroller from "vue-virtual-scroller" Vue.use(VueVirtualScroller) ``` 对于vue-seamless-scroll的引入,根据引用,可以找到以下引入方式: ```javascript import VueSeamlessScroll from 'vue-seamless-scroll' Vue.use(VueSeamlessScroll) ``` 一旦你在项目中导入了这两个库并进行了相应的配置,你就可以在Vue组件中使用它们了。可能需要根据库的文档进行具体的配置和使用。 希望这能帮到你!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue-virtual-scroller的使用,展示巨量数据,长列表优化,虚拟列表](https://blog.csdn.net/muzidigbig/article/details/132135898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值