vue纪录页面滚动位置

博客介绍了在Vue中实现页面滚动位置保存的方法。包括给滚动盒子添加样式解决苹果下滚动不流畅问题,添加滚动事件和引用,在method里对应生命周期。还提到因公司项目无法开启history模式,只能采用此方式,若滚动循环组件,可传入index并以数组存滚动距离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.页面keepAlive

2.滚动的盒子加上overflow:scroll

和-webkit-overflow-scrolling: touch;(解决苹果下不流畅)

3.盒子添加事件@scroll="contentScroll" 加上引用ref

4.method里

contentScroll (e) {
  let target = e.target || e.srcElement
  this.scrollTop = target.scrollTop
  if (target.scrollTop + target.clientHeight >= target.scrollHeight - 3) {
    this.loadArticlesByTypeAndId()
  }
},

 对应生命周期

activated () {
  this.scrollTop = sessionStorage.getItem('scrollTop')
  this.$refs.list.scrollTo(0, this.scrollTop)
},
deactivated () {
  sessionStorage.setItem('scrollTop', this.scrollTop)
},

 

 

另外,vue路由貌似可以纪录位置,但是要开启history模式,公司项目已根深蒂固没法改了,只能用这种方式实现

 

 

如果滚动的是循环出来的组件

将index传入组件

滚动距离用数组存,index存对应位置

### uni-app 中实现下拉触底加载更多功能 在 `uni-app` 开发环境中,可以通过组合使用 `onPullDownRefresh()` 和 `onReachBottom()` 生命周期函数来分别处理下拉刷新和上滑触底加载更多的逻辑。 #### 下拉刷新 当用户执行下拉操作时会触发此事件,在该回调内可以发起网络请求获取最新数据并更新视图。需要注意的是调用结束之后要记得停止刷新动画以提示用户操作完成: ```javascript // pages/index/index.vue export default { methods: { onPullDownRefresh() { console.log('正在刷新...'); // 模拟异步请求过程 setTimeout(() => { // 更新界面显示的数据 // 停止刷新状态 uni.stopPullDownRefresh(); console.log('刷新完毕'); }, 2000); } } } ``` #### 上滑触底加载更多 随着用户的不断向上滚动页面直到最底部,则会激活这个钩子函数用于追加新一批次的内容展示给访问者查看: ```javascript // 继续上面的例子 methods: { ..., onReachBottom() { console.log('已到达底部'); // 这里可以根据实际情况调整参数或条件判断是否还有更多可加载项 // 同样模拟一次延迟后的响应作为新增记录加入现有列表之中 setTimeout(() => { const newData = Array.from({ length: 10 }).map((_, i) => ({ id: this.data.length + i, content: '这是第' + (this.data.length + i + 1) + '条消息'}) ); this.setData({ data: [...this.data, ...newData] }); console.log(`${newData.length} 条新纪录被成功添加`); }, 1500); // 如果没有更多数据则应告知用户已经全部加载完毕 } }, data() { return { data: [] // 初始为空数组等待后续填充 }; } ``` 上述代码片段展示了如何利用这两个 API 完成基本的交互体验设计[^1]。对于更复杂的应用场景可能还需要考虑诸如防抖动机制防止频繁触发等问题优化用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值