我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vant-List-@load事件一直触发的解决

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vant-List-@load事件一直触发的解决

vant-List-@load事件一直触发

项目场景

今天项目用到vant-List,发现一直触发@load事件。

这是请求的page和pageSize

page: 0,
pageSize: 10,

后端测试数据一共21条,但是进入页面就一下请求了三次,全部加载完数据了,这样就达不到要求了。

问题描述

查看了文档底下的常见问题:

为什么会连续触发 load 事件?

如果一次请求加载的数据条数较少,导致列表内容无法铺满当前屏幕,List 会继续触发 load 事件,直到内容铺满屏幕或数据全部加载完成。因此你需要调整每次获取的数据条数,理想情况下每次请求获取的数据条数应能够填满一屏高度。

看到这个时候我查看了一下代码,10条的数据量是能够填满一屏的,但是还是直接请求完成了。

往下走:

在 html、body 上设置 overflow 后一直触发加载?

如果在 html 和 body 标签上设置了overflow-x: hidden样式,会导致 List 一直触发加载。

html,
body {
overflow-x: hidden;
}

这个问题的原因是当元素设置了overflow-x: hidden样式时,该元素的overflow-y会被浏览器设置为auto,而不是默认值visible,导致 List 无法正确地判断滚动容器。

解决方法是去除该样式,或者在 html 和 body 标签上添加height: 100%样式。

原因分析

到这里就找到问题的原因了,我习惯在外层盒子加上min-height: 100vh;overflow-x:hidden;没想到会影响这个组件,麻了。

解决方案

去除overflow-x: hidden;或将min-height: 100vh;改为height: 100vh;

vant-list onLoad触发以及tab切换不再触发问题

首先 van-list 是首次进就会触发加载的,滚动条滑倒底部不会再触发 一般是因为外部高度未固定导致拿不到滚动条位置

<template>
    <div class="listClass" ref="listout">
        <van-list v-model="loading" :finished="finished" finished-text="没有更多了" @load="onLoad">
            <div v-for="(item, index) in list" :key="index">{{item}}</div>
        </van-list>
    </div>
</template>
<script>
export default {
    data() {
        return {
            // 初始化定义
            loading: true,
            finished: false,
            searchData: {
                pageSize: 10,
                pageNo: 0
            },
            list: []
        }
    },
    methods: {
        onLoad(){
            this.searchData.pageNo += 1
            this.obtainList()
        },
        // 列表
        obtainList () {
            // 调用列表接口(此为演示)
            findList(this.searchData).then(res => {
                if (res.data.data && res.data.errcode == 0) {
                    if(this.searchData.pageNo == 1){
                        this.list = []
                    }
                    res.data.data.result.forEach((v) => {
                        this.list.push(v)
                    })
                    this.loading = false
                    if(this.searchData.pageNo >= res.data.data.totalPage) {
                        this.finished = true
                    }
                }
            })
        }
    }
}
</script>
<style scoped>
.listClass {
    width: 100%;
    height: 100vh;
    overflow-y: auto;
}
</style>

tab 切换的时候 需要重置下loading和finished状态

    // 切换
    activeClick (type) {
      this.searchData.active = type
      this.searchData.pageNo = 0
      this.$refs.listout.scrollTop = 0
      this.loading = true
      this.finished = false
      this.onLoad()
    }

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vant-List-@load事件一直触发的解决

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vant-List-@load事件一直触发的解决

这篇文章主要介绍了vant-List-@load事件一直触发的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-18

vant-list上拉加载onload事件触发多次问题及解决

这篇文章主要介绍了vant-list上拉加载onload事件触发多次问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-01-17

vant-list组件触发多次onload事件导致数据乱序的解决方案

这篇文章主要介绍了vant-list组件触发多次onload事件导致数据乱序的解决方案
2023-01-28

vant中list的使用以及首次加载触发两次解决问题

这篇文章主要介绍了vant中list的使用以及首次加载触发两次解决问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

解决iOS下无法触发focus事件的问题

前提 我的思路需要在点击事件之后,先让一个input元素失去焦点,再让另一个input 元素获取到焦点,代码如下:$('#xd_content .tabcontent .nav').on('click', function () {$('#
2022-05-20

C#Process的OutputDataReceived事件不触发问题及解决

这篇文章主要介绍了C#Process的OutputDataReceived事件不触发问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-25

C#Process的OutputDataReceived事件不触发问题如何解决

本篇内容介绍了“C#Process的OutputDataReceived事件不触发问题如何解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
2023-07-05

怎么解决vue点击弹窗自动触发点击事件的问题

这篇文章给大家分享的是有关怎么解决vue点击弹窗自动触发点击事件的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。业务场景:使用vue +element ui 的el-dialog,点击弹窗之后,默认加载第一个
2023-06-15

javascript当对象的属性之一发生变化时触发此事件使用什么函数,详细讲解

JavaScript中可以通过Object.defineProperty()函数监听对象属性的更改。该函数允许定义自定义属性描述符,包括get和set函数。当属性发生更改时,这些函数被调用,触发自定义事件。通过使用this关键字,可以访问对象属性和方法。确保指定get和set函数,否则将使用默认行为。
javascript当对象的属性之一发生变化时触发此事件使用什么函数,详细讲解
2024-04-02

javascript当某被拖动的对象在另一对象容器范围内拖动时触发此事件使用什么函数,详细讲解

dragenter和dragleave事件在JavaScript中用于管理拖放操作。当可拖动对象进入或离开另一个对象的容器范围时,它们会触发。dragenter事件用于在对象进入容器时执行操作,例如突出显示容器。dragleave事件用于在对象离开容器时撤销先前操作。最佳实践包括使用事件委托、防止重复触发、提供视觉提示和处理数据传输。这些事件有助于提供直观的用户体验并提高拖放操作的可控性。
javascript当某被拖动的对象在另一对象容器范围内拖动时触发此事件使用什么函数,详细讲解
2024-04-02

javascript当页面中的一部分或者全部的内容将被移离当前页面[剪贴]并移动到浏览者的系统剪贴板时触发此事件使用什么函数,详细讲解

JavaScript中用于在页面内容被剪切时触发的事件是copy事件。该事件可在可拷贝元素上监听,如或。copy事件对象包含剪切文本、防止剪切或停止冒泡等信息。通过监听copy事件并处理事件对象,开发者可以实现自定义剪切行为,如阻止某些内容剪切或显示剪切消息。请注意,copy事件在用户选择文本或使用键盘快捷键剪切时不会触发。
javascript当页面中的一部分或者全部的内容将被移离当前页面[剪贴]并移动到浏览者的系统剪贴板时触发此事件使用什么函数,详细讲解
2024-04-02

编程热搜

目录