当前位置:   article > 正文

解决Element UI el-select数据太多造成页面卡顿

解决Element UI el-select数据太多造成页面卡顿

问题:el-select接收后端放回的数据太过庞大(成千上万条),导致页面渲染的时候造成卡顿现象。去让后端那边重新调整数据会加大后端的工作量,如何从前端解决这个问题呢?

解决:利用触底加载方法减少资源的消耗,避免页面卡顿。监听到下拉滚动事件,当下拉宽高度+可滑动高度距离底部的距离 > 可滑动高度时,增加数据访问量。

代码实现:

  1. <el-select
  2. v-model="value"
  3. placeholder="请选择"
  4. filterable
  5. clearable
  6. v-el-select-loadmore:rangeNumber="loadMore(rangeNumber)"
  7. @blur="blur"
  8. :filter-method="filterMethod">
  9. <el-option
  10. v-for="i in options.slice(0, rangeNumber)"
  11. :key="i.id"
  12. :label="i.label"
  13. :value="i.value"
  14. ></el-option>
  15. </el-select>
  1. import { getlist } from "@/api/index";
  2. import Vue from "vue";
  3. Vue.directive("el-select-loadmore",{
  4. bind(el,binding){
  5. //获取element-ui定义好的scroll盒子
  6. const SELECTWRAP_DOM = el.querySelector(".el-select-dropdown .el-select-dropdown__wrap")
  7. SELECTWRAP_DOM.addEventListener("scroll",function(){
  8. //scrollHeight 获取元素内容高度
  9. //scrollTop 获取或设置元素的偏移值,常用于计算滚动条的位置,当一个元素的容器没有产生垂直方向的滚动条,则默认scrollTop=0.
  10. //clientHeight 读取元素的可见高度
  11. //ele.scrollHeight - ele.scrollTop === ele.clientHeight;如果元素滚到底等式返回true,没有返回false;
  12. const condition = this.scrollHeight - this.scrollTop <= this..clientHeight
  13. if(condition){
  14. binding.value();
  15. }
  16. })
  17. }
  18. });
  19. export default{
  20. data(){
  21. return {
  22. options:[],//下拉框列表数据
  23. value:""
  24. rangeNumber:10,
  25. }
  26. },
  27. methods:{
  28. //获取下拉框列表数据
  29. getList(){
  30. getList().then(res=>{
  31. this.options = res;
  32. })
  33. },
  34. //下拉框搜索
  35. filterMethod(query){
  36. if(query){
  37. this.options = this.options.filter(i=>{
  38. return i.label.includes(query)
  39. })
  40. }
  41. },
  42. //下拉框滚动事件
  43. loadMore(){
  44. //每次滚动到底部新增条数,可自定义
  45. return ()=>this.rangeNumber += 10;
  46. },
  47. //下拉框失去焦点事件
  48. blur(){
  49. this.rangeNumber = 10;
  50. },
  51. },
  52. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/114818
推荐阅读
相关标签
  

闽ICP备14008679号