前情

uni-app是我很喜欢的跨平台框架,它能开发小程序,H5,APP(安卓/iOS),对前端开发很友好,自带的IDE让开发体验也很棒,公司项目就是主推uni-app。

最近有多个需求,页面滚动到底的时候应该加载下一页数据,于是通过页面生命周期钩子onReachBottom来实现。

坑位

onReachBottom是当页面滚动底一定距离的时候触发,但是滚动到底后,如果没有数据加载出来,想再一次触发那就得手动回滚一点再往上滚才会触发。

Why?

因为onReachBottom的触发机制就是页面滚动到底一定距离的时候触发,具体多少见pages.json里设置的onReachBottomDistance。

解决方案

即然滚动到一定距离才触发,那当我们知道已经滚动到底了的时候,且没有下一页数据的时候,我们代码手动往回滚比onReachBottomDistance设置的多一点点距离就好了。

  • 在页面生命周期onPageScroll钩子里做回滚操作
...
/**
* 监听页面滚动
* @param {Object} detail
*/
onPageScroll(detail) {
clearTimeout(this.scrollTimer);
this.scrollTimer = setTimeout(() => {
if (this.noDateStatus) {
this.noDateStatus = false;
uni.pageScrollTo({
scrollTop: detail.scrollTop - 25,
duration: 100
});
}
}, 300);
},
...
  • 在pages.json配置临界距离,此处为滚动到距底部20px的时候触发onReachBottom
{
"path": "页面路径",
"style": {
"navigationBarTitleText": "我是页面",
"onReachBottomDistance": 20
}
}

至此,已完成了每次滚动到最底的时候都能自动回滚等待下一次的滚动操作,如果你有更好的方式,期待你的分享。

uni-app onReachBottom钩子触发问题的更多相关文章

  1. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  2. App.vue 不触发 beforeRouteEnter

    因为要在 router 对应一个路由的组件才可以触发 如果没有将 App.vue 作为某个路由组件(一般不会吧) 就不会触发该导航守卫 应该是想在每次进入应用时加载一些数据 所以放在 App.vue ...

  3. 如何在调试Window App时,触发 Suspending ,Resuming 等事件

    Visual Studio prevents Windows from suspending an app that is attached to the debugger. This is to a ...

  4. 使用k8s容器钩子触发事件

    原文: http://yunke.science/2018/04/15/k8s-hook/ 容器生命周期的钩子 Kubernetes为容器提供了生命周期钩子.钩子能使容器感知其生命周期内的事件,并且当 ...

  5. uni app 零基础小白到项目实战-1

    uni-app是一个使用vue.js开发跨平台应用的前端框架. 开发者通过编写vue.js代码,uni-app将其编译到Ios,android,微信小程序等多个平台,保证其正确并达到优秀体验. Uni ...

  6. uni app以及小程序 --环境搭建以及编辑器

    https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html 根据以上网页下载自己电脑相应的版本的微信开发者工具(目录 ...

  7. uni app canvas 不生效

    canvas 创建canvas绘图上下文. <canvas style="width: 300px; height: 200px;" canvas-id="firs ...

  8. h5和app原生联调触发方法

    //路径跳转 urlHref(item) {//人物.访谈.动态是一个页面 var para = {}; para.title = "动态详情"; para.type = &quo ...

  9. uni app 零基础小白到项目实战2

    <template> <scroll-view v-for="(card, index) in list" :key="index"> ...

  10. uni app 零基础小白到项目实战

    $emit 子组件传给父组件 $ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http' const now = Date.now ...

随机推荐

  1. C++ const常量指针

    const常量指针 const是C++关键字,译为常量,const指针即为常量指针. 分为三类 指向const的指针 const指针 指向const的const指针 指向const的指针 表示指向区域 ...

  2. MyBatis——案例——查询-单条件查询-动态条件查询

    单条件查询-动态条件查询(choose(when,otherwise))      从多个条件中选择一个   choose(when,otherwise) 选择,类似于java中的Switch语句(w ...

  3. 将 LLMs 精调至 1.58 比特: 使极端量化变简单

    随着大语言模型 (LLMs) 规模和复杂性的增长,寻找减少它们的计算和能耗的方法已成为一个关键挑战.一种流行的解决方案是量化,其中参数的精度从标准的 16 位浮点 (FP16) 或 32 位浮点 (F ...

  4. Android Qcom USB Driver学习(八)

    因为要看usb charging的问题,所以需要补充一下battery的相关知识,算是入门吧 BAT SCH (1)VBATT_VSNS_P (2)BAT_THERM (3)I2C_SDA (4)I2 ...

  5. Pytorch 实现 GAN 网络

    Pytorch 实现 GAN 网络 原理 GAN的基本原理其实非常简单,假设我们有两个网络,G(Generator)和D(Discriminator).它们的功能分别是: G 是一个生成网络,它接收一 ...

  6. 数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊

    本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的环境搭建.故障处理等日常实践操作,以及概念梳理.常用脚本等总结记录,分享 ...

  7. .Net 中 LINQ 基础

    LINQ 基本概念: 语句集成查询,(Language - Integrated Query) 常见用途: .Net 原生集合(List,Array,Dictonary,etc) SQL数据库(尤其是 ...

  8. break,continue,return的只要区别

    a)break 结束当前循环体 b)continue 结束本次的循环,执行下次的循环 c)return 结束函数体,并返回值 d)break 和 continue 写在循环里(for,while)re ...

  9. 使用nacos上传配置文件报错

    1.使用nacos导入配置文件报错:未读取到合法数据,请检查导入的数据文件. 对比在naocs server中导出的文件,发现是少了一级目录.需要创建一个文件夹,名称为组的名称.因为在nacos上传文 ...

  10. TiDB集群安装维护

    TIDB安装操作文档-https://docs.pingcap.com/zh/tidb/stable/production-deployment-using-tiup 1.环境准备(每台) 1-查看系 ...