warning.js:45警告:flattenChildren(...):遇到两个孩子用相同的键,`。1:$ ..

时间:2016-03-23 14:24:37

标签: javascript reactjs

我收到了大量这些错误,一个接一个,警告信息附有不同的密钥。有没有办法根据id键找出它们的来源?

1 个答案:

答案 0 :(得分:1)

找出你犯了关键错误的位置通常很痛苦,而在React 15中,data-reactid甚至从未呈现给DOM,使其变得更难。在普通版本中,只需检查DOM并开始查找具有data-reactid=.1:$....

的元素

无论如何,错误来自于在某处手动设置key道具,因此请在组件中开始查找。如果你有一个数组,并且为这个数组的每个值渲染组件,这通常是一个问题:

var things = [1,2,3,4].map(function(value, index){
  // This will cause Warning: flattenChildren... because
  // every div will be given the same React ID
  return (
    <div key="FIXED_KEY">{value}</div>
  );
})

现在,在这种情况下,您手动设置密钥,只需确保该密钥对于同一循环中的每个呈现组件都是唯一的。