我遇到了一些奇怪的行为,当我从父组件中使用 .map()
并展开结果时,this.props.children
会转换为一个对象。
例子:
const items = [
{ id: 1, name: "Name1" },
{ id: 2, name: "Name2" }
].map((item) => {
return (
<DropdownMenu_listItem key={item.id} item={item} />
);
});
render() {
return (
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
{...items}
</DropdownMenu>
);
}
// DropdownMenu.js
render() {
console.log(this.props.children); // {0: {…}, 1: {…}}
return (
// ...
);
}
奇怪的是,当我省略.map()
并直接传递元素时,它们出现在this.props.children
中,就像预期的数组一样:
render() {
return (
<DropdownMenu
label={'Some label'}
onChange={() => {}}
>
<DropdownMenu_listItem item={{...}} />
<DropdownMenu_listItem item={{...}} />
</DropdownMenu>
);
}
// DropdownMenu.js
render() {
console.log(this.props.children); // [{…}, {…}]
return (
// ...
);
}
任何关于为什么会发生这种情况的见解都将不胜感激。