javascript - 为什么当子项与 React.Children.toArray 一起使用时键会改变?

标签 javascript reactjs toarray

如果我有一个带有 child 的 React 组件,我调用 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到控制台。为什么 key 从 1 更改了至 .$1

最佳答案

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

Note: React.Children.toArray() changes keys to preserve the semantics of nested arrays when flattening lists of children. That is, toArray prefixes each key in the returned array so that each element's key is scoped to the input array containing it.

关于javascript - 为什么当子项与 React.Children.toArray 一起使用时键会改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33791401/

相关文章:

css - 无法在 css-grid-animation 中进行渲染延迟?

java - 这个 lambda 表达式的完整版本是什么?

java - 为什么 Java 的 Collection<E>.toArray() 返回 Object[] 而不是 E[]?

javascript - 如何为文本框添加多项自动完成功能?

javascript - 如何使用 Windows 身份验证在 IIS 上授权 CORS 预检请求

reactjs - 从 vscode 调试启动时,如何让 Firefox 正确恢复其状态?

reactjs - 构建后index.html中的相对路径

javascript - 如何退出全屏 Web 应用程序

javascript - 删除/重置 DOM 节点