当前位置: 首页 > news >正文

免费咨询法律问题的网站知名企业logo

免费咨询法律问题的网站,知名企业logo,wordpress主题添加一个自定义页面,深圳网站建设_请到中投网络!需求 当下拉选项的数据量过大时&#xff0c;后端接口是分页格式返回数据。 解决方案 自定义封装一个懒加载下拉组件&#xff0c;每次滚动到底部时自动获取下一页数据&#xff0c;这样可有效防止数据量过大时造成组件卡顿。 具体实现步骤 1、创建懒加载下拉选择组件 <t…

需求

当下拉选项的数据量过大时,后端接口是分页格式返回数据。

解决方案

自定义封装一个懒加载下拉组件,每次滚动到底部时自动获取下一页数据,这样可有效防止数据量过大时造成组件卡顿。

具体实现步骤

1、创建懒加载下拉选择组件

<template><el-selectv-model="innerValue":placeholder="placeholder":clearable="clearable":filterable="filterable":disabled="disabled"@change="handleChange"@visible-change="handleVisibleChange"@search="handleSearch"><el-optionv-for="item in options":key="item.value":label="item.label":value="item.value"></el-option><divv-if="loading"class="loading-more"style="text-align: center; padding: 10px 0;"><i class="el-icon-loading"></i></div><divv-if="!loading && hasMore"class="loading-more"style="text-align: center; padding: 10px 0;"><span>加载更多...</span></div></el-select>
</template><script>
export default {name: "LazyLoadSelect",props: {value: {type: [String, Number],default: "",},placeholder: {type: String,default: "请选择",},clearable: {type: Boolean,default: true,},filterable: {type: Boolean,default: true,},disabled: {type: Boolean,default: false,},fetchData: {type: Function,required: true,},},data() {return {innerValue: this.value,options: [],loading: false,hasMore: true,currentPage: 1,pageSize: 20,searchKeyword: "",handleScroll: null,};},watch: {value: {handler(val) {this.innerValue = val;},immediate: true,},},methods: {handleChange(value) {this.$emit("input", value);let label = this.options.find((item) => item.value === value).label;this.$emit("change", {value,label,});},async handleVisibleChange(visible) {if (visible) {// 下拉框打开时重置数据this.currentPage = 1;this.options = [];this.hasMore = true;await this.loadData();}},async handleSearch(query) {this.searchKeyword = query;this.currentPage = 1;this.options = [];this.hasMore = true;await this.loadData();},async loadData() {if (this.loading || !this.hasMore) return;this.loading = true;try {const res = await this.fetchData({current: this.currentPage,size: this.pageSize,condition: {nameRegex: this.searchKeyword,},});const newOptions = res.records && res.records.length > 0 ? res.records.map((item) => ({value: item.id,label: item.productName || item.areaName || item.salesmanName || item.agencyName || item.companyName || '',})) : [];this.options = [...this.options, ...newOptions];this.hasMore = newOptions.length === this.pageSize;this.currentPage++;} catch (error) {console.error("加载数据失败:", error);} finally {this.loading = false;}},},mounted() {// 监听滚动事件const selectDropdown = document.querySelector(".el-select-dropdown");if (selectDropdown) {this.handleScroll = () => {const { scrollTop, scrollHeight, clientHeight } = selectDropdown;// 当滚动到底部时加载更多数据if (scrollHeight - scrollTop - clientHeight < 50) {this.loadData();}};selectDropdown.addEventListener("scroll", this.handleScroll);}},beforeDestroy() {// 移除滚动事件监听const selectDropdown = document.querySelector(".el-select-dropdown");if (selectDropdown && this.handleScroll) {selectDropdown.removeEventListener("scroll", this.handleScroll);}},
};
</script><style lang="scss" scoped>
.loading-more {color: #909399;font-size: 12px;
}
</style>

2、使用懒加载下拉组件

// 引入懒加载下拉组件
import LazyLoadSelect from "@/components/lazyLoadSelect/index.vue";// 使用示例
<LazyLoadSelectv-model="searchForm.province":fetch-data="getArea()"placeholder="请选择":style="{ width: '200px' }"@change="handleProvinceChange"/>methods: {// 获取省份回调函数getArea() {return this.getAreaPage()},// 分页查询省份API接口调用getAreaPage async(params) {const res = await axios.post('/api/area/page', params)return res.data}
}              

写在最后

懒加载组件可以直接Copy进行使用,然后根据具体接口情况修改loadData方法中fetchData的请求参数和返回结果即可。

http://www.dtcms.com/a/498333.html

相关文章:

  • 公司网站的主页优化seo是什么意思中文
  • 免费手机网站制作app亦庄建站推广
  • 做外贸在哪个网站找客户网站建设需要提供的资料
  • 制作网站谁家做的好加强文化网站建设
  • 做音乐头像网站wordpress邮箱如何解析
  • 网站开发与维护工资多少先做网站还是先域名备案
  • 全国企业信息查询网站程序员除了做软件是不是就做网站
  • 博罗网站建设公司怎么查注册公司的名字可不可以用
  • 舟山建站比较酷炫的企业网站
  • 小公司网站建设现状制作公司网站需要购买域名和服务器吗
  • 做外国人的生意哪家网站好哪些网站可以做企业推广
  • 南昌互联网网站开发广西建设官方网站
  • 企业网站建设网站优化设计师网站推荐家装
  • 做平面设计都在那个网站找免费素材广东建设工程执业资格注册中心网站
  • 做精神科网站wordpress 默认上传路径
  • 如何在自己网站做解析api深圳百度开户
  • 无锡高端网站建设咨询大丰市市城乡建设局网站
  • 泰安的网站建设公司哪家好夜月直播app下载视频
  • 江西旅游 网站建设深圳品牌女装排行榜前50名
  • 绍兴seo网站推广flask网站开发
  • 央企做的好的网站有了网站模板 还要怎样做
  • 优秀网页设计作品网站北京冬奥会网页设计
  • 食堂承包技术支持 东莞网站建设微信小程序商店怎么开
  • 做网站用框架么网页打不开但是有网
  • 长丰县重点工程建设管理局网站中国百强城市榜单公布
  • 网站访问速度慢的原因海口企业免费建站
  • 奇网企业网站管理系统手机网站建设网站
  • 企业年报信息公示流程郑州百度seo排名公司
  • 违法网站怎么做安全专业画册设计
  • 国外做化学申报的网站软文范例大全200字