最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

element?table?數(shù)據(jù)量大頁面卡頓的解決

 更新時間:2022年01月24日 10:07:37   作者:狗狗狗狗亮  
這篇文章主要介紹了element?table?數(shù)據(jù)量大頁面卡頓的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

element table數(shù)據(jù)量大頁面卡頓

table顯示醫(yī)院列表,這里后臺未做分頁,總共數(shù)據(jù)大約8000條。

一次性全部賦值給table整個頁面都會卡頓好幾秒。

查看了請求接口到數(shù)據(jù)返回的時間為192ms,可以接受。

在這里插入圖片描述

應(yīng)該是頁面渲染的問題。

這邊就在前端做了分頁處理。

調(diào)用接口

 // 獲取醫(yī)院列表
    getHospitalList() {
      this.$api.Hospital.GetHospitalList().then(res => {
        if (res.status == 200) {
          this.tableData = res.data.response;
          this.total = res.data.response.length;
        }
      });
    },
  // 分頁
  handleCurrentChange(currentPage) {
    this.currentPage = currentPage;
  },
  // 搜索
 searchList() {
   let params = "";
   switch (this.select) {
     case "1":
       if (this.input3) {
         params = this.input3;
         this.$api.Hospital.QueryHospitalsByName(params).then(res => {
           if (res.data.length > 0) {
             this.tableData = res.data;
             this.currentPage = 1;
             this.total = res.data.length;
           } else {
             this.$message({
               message: "未查詢到醫(yī)院信息",
               type: "info"
             });
           }
           console.log(res);
         });
       }
       break;
     case "2":
       if (this.input3) {
         params = this.input3;
         this.$api.Hospital.QueryHospitalsByCode(params).then(res => {
           if (res.data.length > 0) {
             this.tableData = res.data;
             this.currentPage = 1;
             this.total = res.data.length;
           } else {
             this.$message({
               message: "未查詢到醫(yī)院信息",
               type: "info"
             });
           }
           console.log(res);
         });
       }
       break;
     default:
       console.log(111);
   }
 },

table組件

<el-table
    :data=" tableData.slice((currentPage - 1) * pageSize, currentPage * pageSize )  "
    border
    style="width: 100%"
    height="400"
    size="mini"
    highlight-current-row
  >
   ……
  </el-table>
  <el-pagination
    layout="prev, pager, next"
    background
    :page-size="pageSize"
    :total="total"
    @current-change="handleCurrentChange"
  >
  </el-pagination>

data里使用到的數(shù)據(jù)

data(){
	return {
		total: 0,
		currentPage: 1,
        pageSize: 50,
	}
}
		

在這里插入圖片描述

el-table大數(shù)據(jù)量渲染卡頓的一種思路

現(xiàn)需要呈現(xiàn)一個表格,有近500行,30多列,使用vue+elementUI呈現(xiàn)。

這個數(shù)據(jù)量不算大,但可能列數(shù)比較多,渲染時速度很慢,滾動會有卡頓,使用體驗(yàn)不佳。

但并不想做分頁處理,想要盡可能接近excel的呈現(xiàn)。

思路

假設(shè)全部數(shù)據(jù)為allData(數(shù)組),現(xiàn)在使用一個displayData(數(shù)組),displayData = allData.slice(scorll, scorll+ displayCount),scroll表示當(dāng)前滾動到的index, displayCount表示要展示的行數(shù)。把displayData設(shè)為el-table的數(shù)據(jù)源,只渲染該部分?jǐn)?shù)據(jù)。通過對表格添加滾動事件監(jiān)聽,來動態(tài)更新scroll,并且對scroll添加watch,當(dāng)scroll發(fā)生變化,就自動更新displayData。

滾動監(jiān)聽

監(jiān)聽滾動需要考慮到兼容性,火狐是DOMMouseScroll,其他的是mousewheel。

?? ??? ??? ?/*指定table的ref*/
? ? ? ? ? ? this.table = this.$refs.mytable.bodyWrapper;
?? ??? ??? ?
?? ??? ??? ?/*瀏覽器兼容*/
? ? ? ? ? ? let userAgent = navigator.userAgent; //取得瀏覽器的userAgent字符串
? ? ? ? ? ? let ff = userAgent.indexOf("Firefox") > -1; //判斷是否Firefox瀏覽器 ? ? ? ? ?
? ? ? ? ? ? if (ff) {
? ? ? ? ? ? ?this.table.addEventListener('DOMMouseScroll', (event) => {
? ? ? ? ? ? ? ? ? ? let detail = event.detail;
? ? ? ? ? ? ? ? ? ? //滾動方向
? ? ? ? ? ? ? ? ? ? let down = detail > 0;
? ? ? ? ? ? ? ? ? ? /**
? ? ? ? ? ? ? ? ? ? 根據(jù)滾動方向和距離修改scroll的值,需要注意scroll的范圍不能越界。
? ? ? ? ? ? ? ? ? ? **/
? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? }else{
? ? ? ? ? ? ? this.table.addEventListener('mousewheel', (event) => {
? ? ? ? ? ? ? ? ? ? let wheel = event.deltaY;
? ? ? ? ? ? ? ? ? ? //滾動方向
? ? ? ? ? ? ? ? ? ? let down = wheel > 0;
? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? }

slider

除了滾動表格,還需要一個模擬滾動條。這里選用slider控件,和scroll綁定。

發(fā)現(xiàn)elementUI的slider數(shù)值方向只能從下到上,且不能有太多的定制化。找到另外一個可深度定制化的vue slider控件:vue-slider-component。通過參數(shù)配置及css修改使其盡可能像滾動條。

在這里插入圖片描述

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用

    Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用

    這篇文章主要介紹了Vue2.4+新增屬性.sync、$attrs、$listeners的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 淺談vue?腳手架文件結(jié)構(gòu)及加載過程

    淺談vue?腳手架文件結(jié)構(gòu)及加載過程

    這篇文章主要介紹了vue腳手架文件結(jié)構(gòu)及加載過程淺談,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • vue篇之事件總線EventBus使用示例詳解

    vue篇之事件總線EventBus使用示例詳解

    這篇文章主要為大家介紹了vue篇之事件總線EventBus使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • 如何通過Vue自定義指令實(shí)現(xiàn)前端埋點(diǎn)詳析

    如何通過Vue自定義指令實(shí)現(xiàn)前端埋點(diǎn)詳析

    埋點(diǎn)分析是網(wǎng)站分析的一種常用的數(shù)據(jù)采集方法,下面這篇文章主要給大家介紹了關(guān)于如何通過Vue自定義指令實(shí)現(xiàn)前端埋點(diǎn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Vue echarts模擬后端數(shù)據(jù)流程詳解

    Vue echarts模擬后端數(shù)據(jù)流程詳解

    在平常的項(xiàng)目中,echarts圖表我們也是使用的非常多的,通常我們從后端拿到數(shù)據(jù),需要在圖表上動態(tài)的進(jìn)行呈現(xiàn),接下來我們就模擬從后端獲取數(shù)據(jù)然后進(jìn)行呈現(xiàn)的方法
    2022-09-09
  • vue-cli3腳手架的配置及使用教程

    vue-cli3腳手架的配置及使用教程

    這Vue CLI 是一個基于 Vue.js 進(jìn)行快速開發(fā)的完整系統(tǒng)。篇文章主要介紹了vue-cli3腳手架的配置以及使用,需要的朋友可以參考下
    2018-08-08
  • Vue實(shí)現(xiàn)模糊查詢的簡單示例

    Vue實(shí)現(xiàn)模糊查詢的簡單示例

    在Vue中實(shí)現(xiàn)模糊查詢,你可以使用JavaScript的filter和includes方法,結(jié)合Vue的v-for指令,本文給大家舉了一個簡單的示例,并通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Vue.js暴露方法給WebView的使用操作

    Vue.js暴露方法給WebView的使用操作

    這篇文章主要介紹了Vue.js暴露方法給WebView的使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue中字符串如何拼接路由path路徑

    vue中字符串如何拼接路由path路徑

    這篇文章主要介紹了vue中字符串如何拼接路由path路徑方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • VUE3安裝element?ui失敗的原因以及解決辦法

    VUE3安裝element?ui失敗的原因以及解決辦法

    這篇文章主要給大家介紹了關(guān)于VUE3安裝element?ui失敗的原因以及解決的相關(guān)資料,很多朋友升級使用Vue3了,但在安裝element?ui失敗出錯了,這里給大家總結(jié)下,需要的朋友可以參考下
    2023-09-09

最新評論

蒙山县| 陕西省| 永德县| 始兴县| 河池市| 洛扎县| 乐业县| 大悟县| 玉林市| 蓝山县| 安仁县| 平顶山市| 双牌县| 陆丰市| 平舆县| 黄冈市| 大悟县| 休宁县| 肇源县| 安新县| 耿马| 康马县| 阆中市| 平舆县| 泰来县| 塔城市| 确山县| 阳高县| 楚雄市| 金溪县| 汾西县| 始兴县| 东阳市| 彰武县| 香港 | 丹阳市| 平乡县| 九寨沟县| 绥化市| 昆明市| 娄烦县|