• 解决报错:Vue移动端项目中鼠标无动作时,滚动条自动下滑,拉取数据


    背景:

    在鼠标慢慢滚动,滚动到某一处位置的时候,滚动条自动触发,拼命往下走。正常应该是滑动到摸个位置时候,加载下一页的数据。

    Video_2022-09-16_155954

    这个问题困扰了我两天,特此记录。

    用的Vant组件库的van-list来实现自动加载下一页数据。

    解决思路:

    1.因为出现现象是鼠标不动,但是滚动条会自动。所以我先考虑,是不是跟滚动条的事件有关。翻遍了代码,我也没有写鼠标滚动条事件啊,scrollTop都没有写。在这个思路我困在里面2个多小时,查阅网上资料无果,心态崩溃了1个多小时。

    2.后面我就在想,是不是vant组件库的问题,里面的底部加载事件方法有问题。看了下,只是滑动到底的时候,去请求接口。也没啥了。(ps:想去看组件库源码,但是不知道源码在哪里看...好像是在node_modules里...)

    3.来都来了,那会不会是接口的问题啊?想了想应该不会,但是我还是检查了一下(老爷保佑,找到了问题了)

    请求回来的数据列表,第一页和下一页没有合并!!赶紧改正!!

     总结:

    从这个问题中,也暴露了es6扩展运算符的弱点。附上学习链接:

    https://blog.csdn.net/astonishqft/article/details/82899965

    找问题报错,果然还是得自己多思考啊,心态也很重要。每次想要放弃的时候,还好我告诉自己,再看20分钟,就不钻牛角尖了 。因为这样想,这次才能找到这个没有标红的报错。

    相关代码:

    1. v-model="loading"
    2. :finished="finished"
    3. finished-text="没有更多了"
    4. @load="onLoad"
    5. :immediate-check="false"
    6. offset="50"
    7. >
    1. async getArticleListFn () {
    2. // 获取文章列表
    3. const res = await getAllArticleList({
    4. channel_id: this.channelId, // 先默认请求 推荐频道 数据
    5. timestamp: this.theTime
    6. })
    7. console.log(res)
    8. this.list = [...this.list, ...res.data.data.results]
    9. this.theTime = res.data.data.pre_timestamp
    10. /* 底部加载 */
    11. this.loading = false
    12. if (res.data.data.pre_timestamp === null) {
    13. // 本次回来的数据是最后,没有下一段数据了
    14. this.finished = true
    15. }
    16. /* 顶部加载 */
    17. // 顶部加载状态改为false
    18. this.isLoading = false
    19. },
    20. // 底部加载事件方法
    21. async onLoad () {
    22. if (this.list.length === 0) {
    23. this.loading = false// 第一次上面还是判定触底(触发onLoad方法时loading自动改true)
    24. // 如果不改回来,下次触底就不再执行onLoad方法
    25. // 如果页面没有数据,没有高度,让本次onLoad逻辑代码不往下执行
    26. }
    27. this.getArticleListFn()
    28. },

  • 相关阅读:
    基于React俄罗斯方块h5小游戏源码响应式支持PC+手机
    Lua 环境搭建
    超细节的javaWeb知识点总结
    JavaWeb过滤器(Filter)详解,是时候该把过滤器彻底搞懂了(万字说明)
    【Unity Shader】Unity中阴影走样的解决方案
    YOLOv5 - common.py文件解读
    c++(27)STL:容器、算法、迭代器
    R-Drop: Regularized Dropout for Neural Networks解读
    2021了,真的不要再说 Node.js 是一门编程语言了
    第8章 Spring(一)
  • 原文地址:https://blog.csdn.net/weixin_56035334/article/details/126894969