如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

这篇具有很好参考价值的文章主要介绍了如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

    需求:拉下菜单中数据过多,200条以上,就会导致select组件卡死。所以需要使用滑动到底部使其分页加载

    可以借助 onPopupScroll 事件来监听下拉菜单的滚动事件,并判断当前是否已经到达了下拉菜单底部。具体可以通过以下步骤实现:

如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

    1、在组件中绑定 @popupScroll回调事件

 <a-select
                v-model="Form.governmentDirectors"
                @popupScroll="handlePopupScroll"
              >
                <a-select-option
                  v-for="i in queryPageData"
                  :value="i.id"
                  :key="i.id"
                  >{{ i.fullName }}</a-select-option
                >
              </a-select>

    2、在事件处理函数中,获取当前dom节点下滑的距离和滚动的位置。

handlePopupScroll(e) {
  const { target } = e;
  const { scrollTop, scrollHeight, clientHeight } = target;

  if (scrollTop + clientHeight == scrollHeight) {
    // 已经到达底部,触发分页逻辑
    // todo 这里就可以触发加载下一页请求  具体函数根据当前业务需求来定
    handlePagination();
  }
}

    分页逻辑例子:主要是页码++,数据追加(concat)

querypageFn() {
      const params = {
        page: this.querypage.page,
        size: this.querypage.size
      }
      queryListPage(params).then((res) => {
        if (res.data.code === 0) {
          if (res.data.data.length === 0) {
            return
          } else {
            this.queryPageData = this.queryPageData.concat(res.data.data)
          }
        }
      })
    },

    以上基本实现了使用a-select下拉框组件实现下拉分页加载数据,下面我们来说一下我遇到的坑。

当浏览器大小缩放为正常100%是没有问题的,可以正常下拉

并且打印了scrollTop, scrollHeight, clientHeight三个属性的关系

如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

    但是当浏览器缩放大小调整不是100%后 我们下拉框滑到底部,是不会继续请求的,这时控制台也没有报错,接口返回也没有什么问题。

console.log(scrollHeight, scrollTop, clientHeight, 'llslsl')

以下为打印的内容 分辨率为125%的时候,我们会发现 scrollTop发现偏差,导致条件等式不成立

如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。

    到现在我就彻底慌了,难道scrollTop属性和浏览器分辨率有关。查阅资料后还真的是。

可以这样解释:当分辨率发生变化时,页面的布局和尺寸也会发生相应的变化,导致元素的位置和大小产生了变化。而 e.target 是指触发事件的元素,在这个元素尺寸和位置发生变化之后,它的 scrollTop 属性自然也会受到影响。

具体地说,当元素的高度变大或缩小时,它的内容区域的总高度也会发生相应的变化,进而影响到 scrollTop 属性的值。例如,当元素高度变大时,它的内容就需要滚动更多的距离才能到达顶部,因此 scrollTop 属性的值也会相应地增大;而当元素高度变小时,则需要滚动更少的距离才能到达顶部,因此 scrollTop 属性的值也会相应地减小。

以上是分辨率变化对 e.targetscrollTop 属性的影响的一个粗略解释。需要注意的是,具体的影响还取决于其他因素,如CSS样式、页面结构等因素的变化。如果具体情况下需要深入了解 e.targetscrollTop 属性是如何受到影响的,可以通过调试工具等手段进行进一步的排查和分析。

    说一下解决方案吧,我发现无论怎么变大变小  scrollTop 的偏差都会在2以内。所以我们需要改一下if判断里面的判断方式。

if (scrollTop + 2 + offsetHeight >= scrollHeight) 

    以上我们手动给他把这个偏差加上2,并且把等式换为大于等于,我们就能完美解决此bug,我一开始以为是歪点子,现在总结之后发现这是一个合适解决方案哦!文章来源地址https://www.toymoban.com/news/detail-419427.html

到了这里,关于如何vue使用ant design Vue中的select组件实现下拉分页加载数据,并解决存在的一个问题。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3+ant design vue+ts实战【ant-design-vue组件库引入】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥点击复习vue3【watch检测/监听】相关内容 👏👏👏一个好项目的编写不仅需要完美的逻辑,以及相应的技术,同时也需要一个 设计规范的高质量UI组件库 。👏👏👏本期文章将会详细讲解 Ant Design of Vue 组件库的 安装、使用、引入 。

    2024年02月02日
    浏览(50)
  • ant-design-vue中table组件使用customRender渲染v-html

    ant-design-vue遇到table中列表数据需要高亮渲染 1、customRender可以使用,但是使用v-html发现不生效还报错 2、customRender函数返回肯定是jsx语法,于是发现这样写可以

    2024年02月15日
    浏览(53)
  • ant-design-vue在ios使用AUpload组件唤起了相机,HTML的 `capture` 属性

    在使用ant design vue组件的上传组件AUpload的时候有一个问题,直接按照demo写,在ios上会唤起相机,但是实际上我们的需求是弹出选择相册/相机这个弹框。 解决办法是加一个 cupture=\\\"null\\\"这个属性即可 HTML attribute: capture - HTML: HyperText Markup Language | MDN The capture attribute specifies that

    2024年02月12日
    浏览(47)
  • 按需引入ant-design-vue组件

    一、首先创建一个新的Vue项目 选择default含有babel和eslint。或者自定义Manually select features。 babel是一个转码器,主要用于ES2015+ 代码转换为 JavaScript 向后兼容版本的代码 eslint是一个代码检测工具。用来规范编码规范用。 自定义可选的插件有,Babel,TypeScript,Progressive Web App (P

    2024年02月13日
    浏览(56)
  • html中如何用vue语法,并使用UI组件库 ,html中引入vue+ant-design-vue或者vue+element-plus

    前言 先说一下本次应用的场景,本次项目中,需要引入github中别人写好的插件,插件比较大,没有方法直接在自己项目中,把别人的项目打包合并生成html(类似于前端项目打包生成的 dist ),修改这里面的html,这种情况要么用原生js写或者jquery还相对快一些,那为什么不直

    2024年02月10日
    浏览(51)
  • ant design vue Tree组件叶子节点横向排列

    antdesignvue的树形组件要实现组件叶子节点横向排列有点坑,没有 配置属性,需要自己想办法。 要实现的效果 看tree组件的dom结构,父元素flex竖向布局,子项不论节点层级都在同一层!!! 难点在于想直接把其中某一些节点,横向布局排列。 我的实现思路核心还是通过给叶子

    2024年02月01日
    浏览(59)
  • vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)

    demo源码:Vue3 UI Lang 因调研需要,需在同一个项目中集成好几种UI组件库的多语言实现,查看各种组件库的表现情况,以便选定组件库。 注意:这只在调研过程中会如此,实际开发项目中极少存在一个项目中集成多个UI组件库的情况。 本demo实际试验阿拉伯语、法语、葡萄牙语

    2024年02月08日
    浏览(53)
  • Ant Design Vue的table组件高度自适应问题

    今天在编写公司项目的时候碰到ant design vue的table组件高度没办法自适应的问题,会出现如下页面情况。  最终尝试的解决方案只能通过监听浏览器窗口变化实现自适应 (1)给表格的srcoll定义一个动态接收参数,方便后面数据增加动态改变滚动高度。  (2)vue3项目中就直接

    2024年02月16日
    浏览(47)
  • Vue3 - 解决使用 Tailwindcss 后导致 UI 组件库样式受影响,引入后发现项目组件库的组件样式不对了(Element/Ant Design Vue/Naive UI/TDesign)

    网上的教程都无法解决,但本文可以帮助您快速解决该问题。 当项目引入 Tailwind css 后,使用 UI 组件库的某些组件时,发现有些样式丢失及显示错位、背景色丢失等问题, 频发于【按钮组件】背景色丢失 | 【message消息提示组件】样式位置变形等,严重的整个组件库样式都乱

    2024年02月07日
    浏览(60)
  • Vue3的几款UI组件库:Naive UI、Element Plus、 Ant Design Vue、Arco Design

    vue3系列的三款ui框架简要对比: 框架 Element Plus Naive ui Ant Design Vue Arco Design 简介 element-ui Vue3版本,国内使用广泛 Vue作者推荐的Vue3ui 组件库 Ant Design 的 Vue 实现,组件的风格与 Ant Design 保持同步 ArcoDesign 主要服务于字节跳动旗下中后台产品的体验设计和技术实现 社区活跃度

    2024年02月03日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包