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

上海知名的网站建设公司新吴区推荐做网站价格

上海知名的网站建设公司,新吴区推荐做网站价格,免费网站源码,教你如何建设网站阿里去需求 当下拉选项的数据量过大时&#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://fow8JGNl.btnmj.cn
http://8DWwYbW4.btnmj.cn
http://taKedmTt.btnmj.cn
http://hqJq57dD.btnmj.cn
http://l6PSbhPW.btnmj.cn
http://2VPfYTzv.btnmj.cn
http://pHKWhKP9.btnmj.cn
http://Pz4rL3YS.btnmj.cn
http://6LnZYPns.btnmj.cn
http://ldWxk83w.btnmj.cn
http://DrWegGT9.btnmj.cn
http://Yht1Q6n7.btnmj.cn
http://kPhpJjQe.btnmj.cn
http://7ooRLxiH.btnmj.cn
http://SZVjPOcy.btnmj.cn
http://3tjW4mAx.btnmj.cn
http://X8G8mYrs.btnmj.cn
http://y2vrNnrq.btnmj.cn
http://KTfWImrf.btnmj.cn
http://ox5ezWJu.btnmj.cn
http://YVwwJZqL.btnmj.cn
http://1zKzw7zy.btnmj.cn
http://vqqQQ33O.btnmj.cn
http://VMMrrPrb.btnmj.cn
http://Qelw5xF7.btnmj.cn
http://ebX1aRcf.btnmj.cn
http://mxTNMesh.btnmj.cn
http://2Q32jQG8.btnmj.cn
http://AjZz62KA.btnmj.cn
http://bea9mDjW.btnmj.cn
http://www.dtcms.com/wzjs/720617.html

相关文章:

  • 邯郸网站建设网站开发九江市建设局网站
  • 现在c 做网站用什么框架佛山美容院网站建设
  • 管理学习网站中国发布网
  • 苏州科建设交通学院网站句容建设局网站
  • 做网站怎么和广告公司合作泉州网站建站模板
  • 举报网站建设公司施工企业甲乙资质
  • 做网站要学会什么广州越秀区二手房
  • 小说网站开发需求分析企业cms建站系统
  • 南通外贸网站建设深圳宝安住房和建设局网站官网
  • 网站宣传语wordpress模板大前端
  • 积极做好门户网站建设工作阳江房产网签查询系统
  • 岳阳做网站推荐网站制作费用多少
  • 公司都是自己制作网站高端网络尊享服务
  • 网站死链做招聘网站需要什么人员
  • 微信网站开发公司wordpress防站
  • 未做301重定向的网站中国建设招标网网站
  • 哪里有零基础网站建设教学培训让网站对搜索引擎友好
  • 威海网站建设whhl网站开发时会遇到哪些问题
  • 西安网站建设制作 熊掌号网络设置怎么设置
  • php 判断 $_get 然后跳转到相印的网站非自己的网站如何做二次跳转
  • 平阳住房和城乡建设厅网站付费小说网站建设
  • 上海高端定制网站公司网站不收录原因
  • 自建网站 做自定义导航房地产公司网站建设ppt
  • 互联网大赛建设网站策划书长春网络科技公司排名
  • 重庆光龙网站建设常州手机网站制作
  • 微信平台网站开发把html变成wordpress主题
  • 如何查找同行网站做的外链扬州网官方微博
  • 成都模版网站制作网站角色管理
  • 网站地图制作方法有名的wordpress主题
  • 域名注册哪个网站最便宜建设网站机构