7

如果我有一个带有子级的反应组件并且我调用React.Children.toArray这些子级,为什么数组中的对象的键前面带有.$

var Child = React.createClass({
    render: function() {
        console.log(React.Children.toArray(this.props.children)[0].key);
        return <div>{this.props.children}</div>
    }
});

var Container = React.createClass({
    render: function() {   
        return <Child><div key={1}>1</div></Child>
    }
});

ReactDOM.render(<Container />,  document.getElementById('container'));

这将记录.$1到控制台。为什么密钥从 更改1.$1

4

1 回答 1

6

请参阅下面的注释https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray

注意: React.Children.toArray() 在展平子列表时更改键以保留嵌套数组的语义。也就是说, toArray 为返回数组中的每个键添加前缀,以便每个元素的键的范围都限定为包含它的输入数组。

于 2016-09-19T22:14:24.507 回答