前阵子在公司项目中遇到个神奇的bug!
使用的是Antd表格,查看第一页,表格10项数据正确显示;切换到第二页,咦?怎么 第一二三行数据是重复的,本页实际展示了13条数据,怎么多出来了?
首先第一时间想到的是查看后端返回数据是否有误,查看日志发现后端返回数据没有毛病
那问题出在哪里了呢?
百思不得其解,看返回数据对比了好一会儿,发现返回的数据有几条的id怎么是一样的?一般来说id会作为主键是唯一标识。查看数据库,好吧这几条数据id就是一样的,由于业务原因造成的。唯一主键是另外一个字段serial。
而前端代码中Table的rowKey用的是id字段,只有key值变化,React才会认为组件整体变化,所以重复了。
<Table dataSource={dataSource} columns={columns} rowKey={(record) => record.id} />
改成唯一标识字段serial后就渲染正常了。