el-table使用时,动态赋值会出现闪烁的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了el-table使用时,动态赋值会出现闪烁的问题相关的知识,希望对你有一定的参考价值。

参考技术A 使用el-table实现列表时,因为每次都是清空后再重新赋值的,出现了闪烁的问题,整个页面会抖动,也就是el-table会出现暂无数据的效果,解决方案就是,在请求数据前不要清空数组的数据,而是请求成功后,再清空再赋值。
vue+element+el-table渲染数据闪烁

在开发中使用el-table宽度不一致出现抖动问题

1. 问题

点击来回切换时,由于表格列数不一样,会出现抖动的情况

2. 源代码

<template>
  <div class="check-list">
    <section class="fbetween">
      <div>
        <el-radio-group v-model="type" @change="(value)=> handleSearch() ">
          <el-radio-button :label="0">审核中</el-radio-button>
          <el-radio-button :label="2">审核失败</el-radio-button>
        </el-radio-group>
      </div>
    </section>

    <!-- 表格 -->
    <div class="option-table mgt_20" v-loading="loading">
      <el-table :data="tableData" border @selection-change="tableSelect" ref="i-table">
        <el-table-column type="selection" width="50" align="center"></el-table-column>
        <el-table-column v-for="item in column" :key="item.id" align="center" :prop="item.prop" :label="item.label" :min-width="item.width" show-overflow-tooltip>
          <template slot-scope=" row ">
            <template v-if="item.prop == 'businessLicenseUrl'">
              <div class="license-box fcc">
                <el-image class="img" :src="row[item.prop] || ''" :preview-src-list="[row[item.prop]]"></el-image>
                <div class="pre-icon pointer">
                  <i class="el-icon-zoom-in icon"></i>
                </div>
              </div>
            </template>
            <template v-else-if="item.prop == 'auditStatus'">
              <span>auditStatusList[row[item.prop]]</span>
            </template>
            <span v-else>row[item.prop] || '-'</span>
          </template>
        </el-table-column>
        <el-table-column align="center" label="操作" fixed="right" width="220">
          <template slot-scope="row">
            <el-button type="text">查看详情</el-button>
            <el-button type="text">通过</el-button>
            <el-button type="text" class="rejectBtn">拒绝</el-button>
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<script>
export default 
  components:  InsDetail, RejectDialog, Pagination ,
  data() 
    return 
      type: 0,
      tableData: [],
      loading: false,
      selectedIds: [],
    
  ,
  computed: 
    column() 
      const res = [
         id: 1, label: '机构ID', prop: 'id', width: '120', type: [0, 2] ,
         id: 2, label: '机构名称', prop: 'name', width: '120', type: [0, 2] ,
         id: 3, label: '营业执照', prop: 'businessLicenseUrl', width: '150', type: [0, 2] ,
         id: 4, label: '联系人', prop: 'userName', width: '120', type: [0, 2] ,
         id: 5, label: '联系电话', prop: 'userPhone', width: '200', type: [0, 2] ,
         id: 6, label: '联系人邮箱', prop: 'userEmail', width: '200', type: [0, 2] ,
         id: 7, label: '行业技术领域', prop: 'domainField', width: '150', type: [0, 2] ,
         id: 8, label: '提交入驻申请时间', prop: 'createTime', width: '200', type: [0, 2] ,
         id: 9, label: '审核状态', prop: 'auditStatus', width: '150', type: [0, 2] ,
         id: 10, label: '审核失败回复', prop: 'remark', width: '150', type: [2] ,
      ]
      return res.filter(item => item.type.includes(this.type));
    
  ,
  
  mounted() 
    this.getData();
  ,
  methods: 
     async getData() 
     //通过接口获取表格数据
     
  

3.解决方法

  //解决表格抖动问题
  beforeUpdate() 
    this.$nextTick(() => 
      this.$refs['i-table'].doLayout()
    )
  ,

以上是关于el-table使用时,动态赋值会出现闪烁的问题的主要内容,如果未能解决你的问题,请参考以下文章

vue element-ui 动态生成el-table 自定义input input赋值问题

el-table通过弹窗添加数据时,表格中的数据实时修改了

使用vue时会出现加载渲染页面时闪烁问题

在winform上添加用户控件过多时出现闪烁

防止 HTML 5 `video` 在 src 更改时闪烁海报图像

关于Vue ,key ,el-table, :row-key遇到的一个坑