element table数据量太大,造成浏览器崩溃。解决方案

news/2024/7/10 2:52:15 标签: vue, 前端, vue.js, elementui

这是渲染出来的数据

在这里插入图片描述

其实解决思路大致就是:把后台返回的上万条数据,进行分割(前端分页),这样先加载几十条,然后再用懒加载的方式去concat,完美解决

上代码

<template>
  <div class="home-contianer">
    <el-table
      v-loading="loading"
      :data="tableList"
      ref="containerTable"
      border
      stripe
      v-loadmore="loadmore"
      :height="scrollerHeight"
      :header-cell-style="{ backgroundColor: '#E4E4E4', color: '#000000' }"
    >
      <el-table-column
        label="序号"
        align="center"
        prop="index"
        width="50"
        fixed
      />
      <el-table-column
        label="部门"
        align="left"
        prop="deptName"
        width="100"
        fixed
      />
      <el-table-column
        label="仓库"
        align="left"
        prop="wareName"
        width="200"
        fixed
      />
    </el-table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dataList: [],
      loading: false,
      resourceTotal: 0,
      resourceNum: 1,
      resourcePage: 20,
      tableList: []
    };
  },
  directives: {
    loadmore: {
      bind(el, binding) {
        const selectWrap = el.querySelector(".el-table__body-wrapper");
        selectWrap.addEventListener("scroll", function() {
          const scrollDistance =
            this.scrollHeight - this.scrollTop - this.clientHeight;
          // 判断是否到底,scrollTop为已滚动到元素上边界的像素数,scrollHeight为元素完整的高度,clientHeight为内容的可见宽度
          if (scrollDistance <= 10) {
            binding.value();
          }
        });
      }
    }
  },
  computed: {
    // 滚动区高度
    scrollerHeight: function() {
      return window.innerHeight - 200 + "px"; //自定义高度需求
    }
  },
  created() {
    this.getList();
  },
  methods: {
    getList() {
      this.loading = true;
      for (let index = 0; index < 100000; index++) {
        let obj = {
          index: index,
          deptName: index + "deptName",
          wareName: "wareName" + index
        };
        this.dataList.push(obj);
      }
      this.tableList = this.dataList.slice(0, this.resourcePage);
      this.resourceTotal = this.tableList.length;
      this.resourceNum = 1;
      this.loading = false;
    },
    //懒加载
    loadmore() {
      this.resourceNum++;
      this.searchLoadResource();
    },
    searchLoadResource() {
      let result = [];
      if (this.resourcePage * this.resourceNum < this.dataList.length) {
        result = this.dataList.slice(
          this.resourcePage * (this.resourceNum - 1),
          this.resourcePage * this.resourceNum
        );
      } else {
        result = this.dataList.slice(
          this.resourcePage * (this.resourceNum - 1),
          this.dataList.length
        );
      }
      this.resourceTotal = result.length;
      this.tableList = this.tableList.concat(result);
    }
  }
};
</script>
<style>

</style>


http://www.niftyadmin.cn/n/5394225.html

相关文章

杂题——亲密数

题目描述 两个不同的自然数A和B&#xff0c;如果整数A的全部因子(包括1&#xff0c;不包括A本身)之和等于B&#xff1b;且整数B的全部因子(包括1&#xff0c;不包括B本身)之和等于A&#xff0c;则将整数A和B称为亲密数。求3000以内的全部亲密数。 输入格式 无 输出格式 3000以内…

unity学习(37)——自动保存

虽然脚本图片这些东西可以自动保存&#xff0c;但是场景中的控件不会自动&#xff0c;需要增加以下控件。 unity运行自动保存_unity自动保存-CSDN博客 Asset->创建Editor->创建autosave.cs&#xff0c;脚本代码如下&#xff1a; using UnityEditor; using UnityEngine…

抽象的后端

Connection refused: no further information 出现这条代码的核心是你使用redis&#xff0c;但是本地没有开启redis服务 如何启动redis服务 第一步&#xff1a;确定你安装了对应的框架 以spring为例 <dependency><groupId>org.springframework.boot</group…

【Linux】日志命令行练习(持续更新)

文章目录 前言环境情景1. 获取实时日志2. 关键字定位3. 关键字取并集4. 关键字取交集5. 关键字取差集6. 关键字实时日志捕获7. 关键词上下文打印8. 关键词滚动搜索9. 看最早的日志信息 前言 公司生产问题需要登录堡垒机排查。 没有日志平台的情况下&#xff0c;生产问题同样要…

提取天猫店铺商家电话的爬虫软件

在日常生活中&#xff0c;我们经常会遇到需要获取商家电话的情况&#xff0c;比如想要咨询商品信息、预约服务等。而天猫作为国内知名的电商平台&#xff0c;拥有众多的商家店铺&#xff0c;如果能够快速提取店铺商家电话&#xff0c;就能够方便我们与商家进行沟通。 为了实现…

大数据开发项目--音乐排行榜

环境&#xff1a;windows10&#xff0c;centos7.9&#xff0c;hadoop3.2、hbase2.5.3和zookeeper3.8完全分布式&#xff1b; 环境搭建具体操作请参考以下文章&#xff1a; CentOS7 Hadoop3.X完全分布式环境搭建 Hadoop3.x完全分布式环境搭建Zookeeper和Hbase 1. 集成MapReduce…

包装类详解

概述 Java提供了两个类型系统&#xff0c;基本类型与引用类型&#xff0c;使用基本类型在于效率&#xff0c;然而很多情况&#xff0c;会创建对象使用&#xff0c;因为对象可以做更多的功能&#xff0c;如果想要我们的基本类型像对象一样操作&#xff0c;就可以使用基本类型对…

Java SpringBoot 获取 yml properties 自定义配置信息

Java SpringBoot 获取 yml properties 自定义配置信息 application.yml server:port: 9090servlet:context-path: /app第一种方法 HelloController package com.zhong.demo01.controller;import org.springframework.beans.factory.annotation.Value; import org.springfram…