vue3+element-plus 通过v-infinite实现下拉滚动无限加载

这篇具有很好参考价值的文章主要介绍了vue3+element-plus 通过v-infinite实现下拉滚动无限加载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

v-infinite官网

vue3+element-plus 通过v-infinite实现下拉滚动无限加载

v-infinite-scroll无限滚动组件使用详解

 1、v-infinite-scroll="load" //load无限滚动加载的方法
 2、infinite-scroll-disabled //是否禁用无限滚动加载
 3、infinite-scroll-delay //节流时延,单位为ms
 4、infinite-scroll-distance //触发加载的距离阈值,单位为px
 5、infinite-scroll-immediate //是否立即执行加载方法,以防初始状态下内容无法撑满容器。
 //默认情况下,infinite-scroll-disabled是false,因此如果组件使用无限滚动加载组件,即使在vue不进行加载方法的调用,组件也会调用该方法,因此如果需要控制的话,尽量是使用infinite-scroll-disabled属性来进行加载方法是否调用的控制。

 官网给到的基础案例:

<template>
  <ul v-infinite-scroll="load" class="infinite-list" style="overflow: auto">
    <li v-for="i in count" :key="i" class="infinite-list-item">{{ i }}</li>
  </ul>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const count = ref(0)
const load = () => {
  count.value += 2
}
</script>

<style>
.infinite-list {
  height: 300px;
  padding: 0;
  margin: 0;
  list-style: none;
}
.infinite-list .infinite-list-item {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 50px;
  background: var(--el-color-primary-light-9);
  margin: 10px;
  color: var(--el-color-primary);
}
.infinite-list .infinite-list-item + .list-item {
  margin-top: 10px;
}
</style>

自己写了一个简单的demo:


<div>
     <el-select v-model="value" style="margin-right: 20px" v-if="isMounted">
        <div v-infinite-scroll="load" infinite-scroll-immediate="false" style="overflow: hidden"></div>
         <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
     </el-select>
</div>



<script setup>
const value = ref('')
let options = reactive([{
  value: "aaa",
  label: "atext"
},
{
  value: "bbb",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "cccc",
  label: "atext"
}, {
  value: "ddd",
  label: "dtext"
}, {
  value: "yyyy",
  label: "dtext"
}
])
const load = () => {
  options.push({
    value: "xxxx",
    label: "xtext"
  })
}
const isMounted = ref(false);
onMounted(() => {
  isMounted.value = true;
});
</script>

当使用v-infinite时,控制台会报错:

vue3+element-plus 通过v-infinite实现下拉滚动无限加载

 原因:

官方上的Issues解释是需要nextTick()之后再去显示
解决方法是组件挂载完成再去显示el-select组件

所以在上面demo中select组件加了v-if,并且在onMounted中将其再显示出来。

报错解决问题是掘金上的一位大哥的方法,原文地https://juejin.cn/post/7095925947412512804

vue3+element-plus 通过v-infinite实现下拉滚动无限加载

 

vue3+element-plus 通过v-infinite实现下拉滚动无限加载

 上面el-select组件的下拉加载,看完可能会有两个疑问,一个是为什么el-option不写在v-infinite-scroll标签内部,二是为什么v-infinite-scroll 所在的标签的overflow属性不是和官网一样的atuo,二是hidden,因为在此案例中放到内部或不放在内部效果一样的,最核心的是如果此案例中,并没有给v-infinite-scroll所在的标签设置高度,理应是下拉加载会失效,但是如果是hidden的话,并且此时高度为0,那么只要鼠标滚轮滑动,那么就会触发下拉加载,

总结下拉就是,此案例效果是打开下拉框,只要滑动滚轮就触发下拉加载,二官网那种标准案例,是滚轮滑动到底部才会触发下拉加载。

如果是官网那种标准做法需要注意:使用v-infinite-scroll的元素设置overflow: hidden以及固定高度文章来源地址https://www.toymoban.com/news/detail-492763.html

到了这里,关于vue3+element-plus 通过v-infinite实现下拉滚动无限加载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue3+element-plus上传文件,预览文件

    vue3+ts+element-plus上传文件,预览文件 场景:使用element-plus的el-upload标签,手动上传文件,可预览docx,xlsx,pdf,jpg,jpeg,png(本地资源以及网络资源)。 1、使用el-upload标签 检查上传文件的文件格式与大小 上传的附件信息在fileList中,组装接口所需数据进行上传 使用docx-preview插件预览

    2024年02月11日
    浏览(39)
  • vue3项目搭建并配置element-plus

    安装完成后,输入如下指令查看vue的版本: 选择一个要存放项目的目录,打开小黑窗输入如下命令: 一开始输入项目名称或者默认vue-project,然后根据需求选择Yes/No 生成完项目后,输入如下指令: src/main.js里引入 index.css的文件位置根据实际情况写,也有可能是 const app后面加

    2024年02月13日
    浏览(47)
  • vue3 element-plus动态菜单及动态图标

    引入element-plus 注册图标组件 动态引入图标代码 完整代码 路由如下

    2024年01月18日
    浏览(31)
  • Vue3+element-plus实现后台管理系统

     环境:node.js软件 、Vs code、vite、elemnt-plus、windicss(样式框架)     1、首先,使用npm 命令构建项目( vscode安装的插件 vscode中文显示插件   2、高亮提示插件volar   3、vue 3 sni 代码提示) 快速上手 | Vue.js    a. npm -v 查看node.js 版本    b.  npm  config get registry   查看注册镜像是

    2024年02月09日
    浏览(39)
  • 新星计划打卡学习:VUE3引入element-plus

    目录 1、安装element-plus 2、安装按需导入插件 3、修改配置文件 4、添加页面内容 5、保存并重启项目 官网说要想使用element-plus需要先进行安装,并给出了三种安装方式,我选择了第三种。  报错了:  解决的办法: 原因是没有安装pnpm,看此博主文章进行解决 https://blog.csdn.n

    2024年02月16日
    浏览(41)
  • (二) Vue3 + Element-Plus 实现动态菜单栏

    系列介绍:Vue3 + Vite + TS 从零开始学习 项目搭建:(一) Vue3 + Vite + TS 项目搭建 实现动态菜单栏:(二) Vue3 + Element-Plus 实现动态菜单栏 实现动态面包屑:(三) Vue3 + Element-Plus 实现动态面包屑 实现动态标签页:(四) Vue3 + Element-Plus 实现动态标签页 实现动态主题色切换(demo):(五)

    2023年04月23日
    浏览(42)
  • vue3+element-plus 表单输入框无法输入

    Element-Plus在进行reactive在对登录用户密码输入输入时失效,最后发现是el-form,在进行ref和model进行绑定的时候,绑定的属性名称都是一致的,导致界面无法输入,如下图所示都绑定的是:loginForm,代码入下图所示: 此时界面操作输入框,是无法编辑的: 而el-form修改的model=\\\"logi

    2024年02月11日
    浏览(33)
  • vue3中element-plus Upload上传文件

    先上效果图:  上传后:  页面: 我这里做个限制,仅限上传一个pdf文件,如果不需要可以去掉,更多api请参考官方upload上传官方文档 js部分: 完结,撒花~

    2024年02月13日
    浏览(30)
  • vue3 element-plus 暗黑模式(主题切换)简易版

    暗黑模式是指在应用程序或操作系统中使用暗色背景和浅色文本的界面设计。与传统的亮色模式相比,暗黑模式具有以下特点: 减少眼部疲劳:使用暗色背景可以减少屏幕发出的蓝光,减轻长时间使用电子设备对眼睛的疲劳程度。这对于在晚上或低光环境下使用设备的人来说

    2024年02月08日
    浏览(46)
  • 使用 Vite + Vue3 + Element-Plus + Pinia + Ts 搭建 Vue3 项目

    Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 首先 npm 输入: Project name :项目名称 Select a framework :选择一个框架 Select a variant :选择 ts 或者 js 输入项目名称后选择 vue 选择

    2024年02月09日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包