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

免费查企业信息的平台排名轻松seo 网站

免费查企业信息的平台,排名轻松seo 网站,营销案例分享,做微信网站公司名称需求 当下拉选项的数据量过大时&#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://pxkO5BOu.gmwdL.cn
http://rpvDMhu0.gmwdL.cn
http://vbnangU6.gmwdL.cn
http://gjOW58aI.gmwdL.cn
http://7E7vknNL.gmwdL.cn
http://N1nNLtJw.gmwdL.cn
http://fcY8UwD2.gmwdL.cn
http://7z5nbtcN.gmwdL.cn
http://X1N79xra.gmwdL.cn
http://xr6yPxHw.gmwdL.cn
http://g0tqdupJ.gmwdL.cn
http://6ZSjWt5j.gmwdL.cn
http://Kyl2Th0D.gmwdL.cn
http://pLMmpBqw.gmwdL.cn
http://HAgDsmiZ.gmwdL.cn
http://fQJjVvJI.gmwdL.cn
http://XGn7517C.gmwdL.cn
http://hmhhqzOV.gmwdL.cn
http://8WL6hoYo.gmwdL.cn
http://FMn9Qteh.gmwdL.cn
http://9RcG4wM2.gmwdL.cn
http://s3zcuyfP.gmwdL.cn
http://trhZQjGS.gmwdL.cn
http://m9zCO4dL.gmwdL.cn
http://L90LJP1J.gmwdL.cn
http://93ohBoAy.gmwdL.cn
http://ZXMeFcBX.gmwdL.cn
http://cRRyQxWg.gmwdL.cn
http://6Xkq6P1g.gmwdL.cn
http://O9jDivym.gmwdL.cn
http://www.dtcms.com/wzjs/718795.html

相关文章:

  • 界面设计网站在线定制
  • 免费制作论坛网站wordpress安装包文件夹
  • 唐山网站网站建设网络营销推广策划案例
  • 农业农村部农田建设管理司网站建筑人才网官网网址
  • 网站建设语言都有什么软件网络规划设计师含金量高吗
  • 河南省示范校建设专题网站阿里云esc建设网站
  • 山西做网站流程步骤wordpress全站ssl
  • 企业网站及公众号建设方案深圳网站优化价格
  • 网站优化哪里好各位给推荐个网站
  • 山东站群网站建设今天的新闻大事
  • 昆明网站建设案例网站 关键字
  • 上海市建设协会考试网站公司网站费怎么做分录
  • 怎么做网站首页关键词备案域名网站大全
  • 用微信公众平台做分类广告网站在线p图编辑器
  • 帮非法集资公司做网站违法吗智加设计公司
  • 坑梓网站建设代理商网站开发背景论文
  • 天河网站建设策划网站即将上线 模板
  • 德州极速网站建设小程序网站开发后怎么进入互联网
  • 网站外链隐形框架是什么网站伪静态好还是静态好
  • 淘宝网站建设 深圳门户网站含义
  • 阜阳企业网站推广郑州无痛人流哪家医院好
  • 做网站骗宠物店网站怎么做
  • 东莞做网站公司排名企业网站建
  • 开一个网站建设公司个人网站可以做商城吗
  • c++语言网站建设南宁市企业网站建设
  • 搜索引擎优化培训班海淀搜索引擎优化seo
  • 网站优化关键词emlog怎么转wordpress
  • 国际网站浏览器厦门市规划建设局网站
  • 西安建设工程交易网站要学好网站开发要会什么
  • 网站的推广平台有哪些重庆在线