Vue 分页组件(如el-table的el-pagination)第二页时清除已勾选数据的问题

一、前言

element-UI 的table表格数据有提供多项框 type=“selection” 的功能,但如果表格有分页功能,例如在第1页进行了数据勾选,等切换到其他页面,再回到第1页,勾选状态就不存在了。这是因为分页要重新请求后台数据,这样上一次请求的数据的勾选状态就不存在了。
element提供了reserve-selection可以保存数据更新前选中的值,这个属性需要搭配 row-key 指定一个唯一标识。

二、解决方法

1‌. 启用reserve-selection属性‌:在标签中设置reserve-selection=“true”。
2‌. 设置row-key‌:通过:row-key="getRowKeys"指定一个唯一标识符函数,该函数返回每行数据的唯一标识。例如:

<el-table 
          :data="tableList" 
          border max-height="250"
          style="text-align:center;color: #000000;margin-top:10px;background:#f8f8f8;" 
          @select="select"
          :row-key="getRowKeys"
          >
    <el-table-column type="selection" width="60" align="center" fixed 
         :reserve-selection="true">
    </el-table-column>
</el-table>

在这里插入图片描述

JS部分:

methods:{
    getRowKeys(row) {
      return row.userId
      // 需要return的是一个唯一的标识值
    },
}

2.1、扩展

上面的row-key属性调用了一个getRowKeys方法,也有另一种写法:

<el-table 
          :data="tableList" 
          border max-height="250"
          style="text-align:center;color: #000000;margin-top:10px;background:#f8f8f8;" 
          @select="select"
          :row-key="(row)=>{return row.row_id}"
          >
    <el-table-column type="selection" width="60" align="center" fixed 
         :reserve-selection="true">
    </el-table-column>
</el-table>

在这里插入图片描述
或者写为:row-key=“user_id”