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

相关推荐
头茬韭菜2 分钟前
第 3 篇:「Pydantic 即 Schema」—— 工具生态三层解剖
前端·chrome·ai·openmanus
恋猫de小郭23 分钟前
Flutter 状态管理基准测评,一个很有趣的观点
android·前端·flutter
雪芽蓝域zzs28 分钟前
前端编辑组件wangEditor
前端
风骏时光牛马1 小时前
稳定性治理及疑难问题深度剖析与实战复盘
前端
JeffongTan9 小时前
在LWC中镶嵌VF Page获取用户IP
前端·javascript·salesforce
陆枫Larry11 小时前
Astro 是什么
前端
是立不是利13 小时前
写给设计师的 CSS 博客美学指南
前端·css
默_笙14 小时前
🏝 Docker 就是"房地产开发":从施工图纸到小区物业的容器化指南
前端·javascript
计算机魔术师14 小时前
Rohan Paul 谈用时间跨度衡量智能体能力,并引用 OpenAI 自动化研究实习生里程碑
前端