我已经将React从0.12.2升级到0.13.x(也是React路由器),不幸的是我收到了这个警告。
警告:任何对键控对象的使用都应该在作为子对象传递之前包装在React.addons.createFragment(object)中。
在我看来,问题是由我的<RouteHandler>
中的密钥属性引起的。在React 0.12.x中,我使用getRoutes()
函数设置密钥。
render: function () {
var name = this.getRoutes().reverse()[0].name;
return (
<div className="app">
<Router.RouteHandler
key={name}
places={this.state.places}
mode={this.state.mode}
...
然后React知道使用哪个组件。它的工作原理类似
http://theimagehost.net/upload/798bf2195d31a2926250e6fbca806254.gif
目前
http://theimagehost.net/upload/9990cea32e13d443806b829ccbdc964d.gif
我不知道如何判断react应该使用哪个组件。
在呈现基于动态数组的组件列表时,应仅使用key
属性。一旦您将属性从key
重命名为其他属性