React前端开发 - 解决报错:Warning: Each child in a list should have a unique "key" prop.

使用React框架开发前端页面,控制台报错如下:

React开发前端页面控制台报错.png

错误原因:

控制台错误提示:list中的每个子组件应该有一个唯一的key

React在渲染过程中,使用组件的key来标识这个组件是否被重新渲染。因此我们需要在循环的每个子项或子组件中添加一个key属性,如下示例:

    { ["one", "two", "three"].map(item =>
  • {item}
  • ) }

那么React在渲染过程中,怎么使用组件的key来标识组件是否被重新渲染呢?

如下示例:如果中没有设置key属性,则React会重新渲染整个行;如果中设置了key属性,则只更新item.city

React.createClass({
    render: function() {
        var data = [{name: 'Jack', age:28, city:'Beijing'},
                    {name: 'Tom', age:41, city:'Shanghai'}
                   ];
        return (
            
{ data.map(function(item, i){ return
{[ item.name, // remove the key {item.city} , item.age ]}
; }) }
); } })

React渲染过程:

  • 由组件创建一个虚拟DOM树:vDOM(内存中)
  • React将组件插入实际DOM中
  • React检测到状态变化并更新实际DOM来与vDOM同步

解决方法:

解决问题的方法已经很明确了,查代码发现在循环中子项没有设置key属性,加上后不再报错。

let name = fileName.split(',').map((item) => {
      return (
          
{item}
) })

附录:相关文章链接如下:
https://sentry.io/answers/unique-key-prop/
https://stackoverflow.com/questions/28329382/understanding-unique-keys-for-array-children-in-react-js

你可能感兴趣的:(React前端开发 - 解决报错:Warning: Each child in a list should have a unique "key" prop.)