当使用antd table报“Warning: Each child in a list should have a unique "key" prop.”时

727 阅读1分钟

react + antd 项目使用 table 组件时,报红: “Warning: Each child in a list should have a unique "key" prop.” key的设置存在问题。

一 问题定位:

这里告诉我们是在cell的渲染方法中存在未设置key的问题。

图片.png

二 解决思路:

排查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>
      ],

虽然看到控制台满篇红,第一反应就是就是头大,但,深呼吸,认真看错误提示,你会很快定位到问题的。解决完了,那就短暂休息下吧~

b5af6672b1d6444da871404b629b2c90.gif