el-table加了key导致页面滚动位置异常?这个优化方案让用户体验直线提升!

一、需求背景

最近在做需求的时候,发现切换列表的时候,页面会默认跳转到网页的中间部分,但是我的列表是在下面的位置,这就需要用户切换列表后,再手动滑下去🤔 用户体验并不友好。具体表现如下:

==虽然不是什么大问题,体验上总怪怪的

二、原因定位

最后原因是代码上el-table加了key,因为产品prd是用el-radio-group模拟了el-tabs的切换功能,所以列表的数据是要动态加载的,又要维持默认的排序,所以给el-table加上了key。让表格重新渲染来恢复默认的排序规则,拿到正确的数据。。。

less 复制代码
  <el-table 
        :key='riskLevel' //注意这个key
        :data="list"
        border
        :defaultSort="{ order: 'descending', prop: 'alterDeviceTotal' }"
        @sort-change="onSortChange"
      >

如果去掉key,影响就是切换radio的地区后,排序没能更新。

所以优化上,通过添加ref来操作表格元素,用户切换radio后,清除现有排序、再恢复默认排序规则即可,这样组件不会重新渲染,只是数据上的调整,页面就不会跳到中间去了。

ini 复制代码
  <div class="area-table">
      <div class="table-header">
        <el-radio-group v-model="areaLevel" @change="handleAreaLevelChange">
          <el-radio v-for="item in areaLevelOptions" :key="item.value" :label="item.value">
            {{ item.label }}
          </el-radio>
        </el-radio-group>
      </div>
      <el-table
        ref="tableRef"
        :data="list"
        border
        :defaultSort="{ order: 'descending', prop: 'alterDeviceTotal' }"
        @sort-change="onSortChange"
      >
        <el-table-column
          v-for="column in tableColumns"
          :key="column.prop"
          :prop="column.prop"
          :label="column.label"
          :width="column.width"
          :minWidth="column.minWidth"
          :sortable="column.sortable"
        >
          <template #default="{ row }">
            <span v-if="column.prop === 'rate'">{{ row.rate }}%</span>
          </template>
        </el-table-column>
      </el-table>
      <Paginations
        :totalCount="pages.totalCount"
        :pageNumber="pages.pageNumber"
        :pageSize="pages.pageSize"
        @load-more="onPaginationsChange"
      />
    </div>

ref清除排序&添加默认排序

javascript 复制代码
// 处理区域级别变化-重置表格排序状态并设置默认排序
const handleAreaLevelChange = (value) => {
  tableRef.value.clearSort();
  tableRef.value.sort('alterDeviceTotal', 'descending'); // 手动设置默认排序状态-会触发onSortChange去重新获取数据
};

也就是一个思路吧,看看滚动异常的时候 是不是因为表格加了key

相关推荐
treasure14010 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
jay神11 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
屏什么录11 小时前
长时间录屏中途崩溃:MP4 打不开的 6 种救回方案与参数设置
前端·音视频开发
code_Bo12 小时前
不只命令行:我把跨 Agent 会话同步做成了桌面应用
前端·javascript·后端
kyriewen12 小时前
AI 能把页面写出来,为什么改个需求就开始崩?
前端·javascript·人工智能
涛涛ing13 小时前
2026年最值得关注的前端变化,藏在“默认值”里
前端
亿元程序员15 小时前
太牛了!这AI做出来的游戏,居然还能变现!
前端
hellice15 小时前
闪传 FlashDrop 实战:我用 300 行 Node 代码做了个「4 位取件码」临时文件中转站
前端·产品
用户08297732600515 小时前
RTX 5500 MIG 踩坑记录:切分之后模型跑不起来,排错整整一下午
前端
Lank_M15 小时前
AI 放大后的图更清楚,但它不能当原图入库
前端