react + antd 项目使用 table 组件时,报红: “Warning: Each child in a list should have a unique "key" prop.” key的设置存在问题。
一 问题定位:
这里告诉我们是在cell的渲染方法中存在未设置key的问题。
二 解决思路:
排查columns中每一项的render方法中:
1.是否引用了自定义组件或者第三方组件,且组件的最外层元素是否设置key?
2.设置的key值是否正确?
3.当你引入两个或以上的组件时,需要外层包裹一个容器,而你是否恰好用的<></>呢?
我出现这个问题的原因:是因为在render方法中,我用了<></>作为根元素。虽然编辑器并没有提示错误,但其实已经挖了坑。正常你用<div></div>或者<Fragment></Fragment>作为根元素时,如果没有设置key,在编辑器就会直接报红了,是没有机会在页面上看到这个错的。而<></>会帮你完美的避开编辑器的善意提示。
三 解决方法:补 key
render: (_, record) => [
<Fragment key={record.id}>
<MyBtn type='edit'/>
<MyBtn type='delete' handleClick={() => handleDelete(record)} />
</Fragment>
],
虽然看到控制台满篇红,第一反应就是就是头大,但,深呼吸,认真看错误提示,你会很快定位到问题的。解决完了,那就短暂休息下吧~