我们最近将React升级到0.13,这个小小的警告开始出现:
警告:任何对键控对象的使用都应该在作为子进行传递之前包装在React.addons.createFragment(object)中。
这是我的代码,试图弄清楚如何使用createFragment,但是在从this.props.children包装元素时,无法找到关于如何做到这一点的任何好例子。
在我的情况下,This.props.children将是其他应该包含在li中的React组件。你们之前有没有看过或解决过这个问题?
import React from 'react';
module.exports = React.createClass({
displayName: "public/src/scripts/components/info-block/infoItem.js",
propTypes: {
label: React.PropTypes.string,
children: React.PropTypes.any
},
renderChildren: function(){
var elementsToRender = [].concat(this.props.children);
return elementsToRender.map(function(elem, i){
return <li key={i}>{elem}</li>
});
},
render : function(){
return (
<li>
<span className="ll">{this.props.label}</span>
<span className="lr">
<ul>
{this.renderChildren()}
</ul>
</span>
</li>
);
}
});
我尝试将renderChildren方法切换为:
renderChildren: function(){
return React.Children.map(this.props.children, function(elem){
return React.addons.createFragment({value: <li>{elem}</li>});
});
}
然后会渲染,但我仍然会收到警告