真的很沮丧。我正在尝试为对象数组中每个值的每个键创建一个ListItem
。当我登录item
时,它以字符串形式返回我要查找的密钥。大!但是,列表项永远不会在页面上呈现。
return (
<div>
<List className="list">
{Object.values(props.sectionInfo).forEach(section => {
Object.keys(section).map((item, index) => {
return (
<ListItem button className='list-item'> //doesn't render, but also doesn't throw errors
<ListItemText primary={item} />
</ListItem>
)
});
})}
</List>
</div>
);
console.log(item) //returns "red", "blue"
以下内容完美呈现了列表,但是列表项是索引(0、1)
return (
<div>
<List className="list">
{Object.keys(props.sectionInfo).map((section, index) => {
return (
<ListItem button className='list-item'>
<ListItemText primary={section} />
</ListItem>
)
})}
</List>
</div>
);
任何见识都会有所帮助。
答案 0 :(得分:2)
这是因为您在外部循环中使用了forEach
,而实际上并没有返回任何内容,因此children
的{{1}}属性是List
。试试这个:
undefined
答案 1 :(得分:0)
请尝试按以下方式构建虚拟域的列表:
let items = []
Object.values(props.sectionInfo).forEach(section => {
let subItems = Object.keys(section).map((item, index) => {
return (
<ListItem button className='list-item'> //doesn't render, but also doesn't throw errors
<ListItemText primary={item} />
</ListItem>
)
});
items = items.concat(subItems);
})
return (
<div>
<List className="list">
{items}
</List>
</div>
);
答案 2 :(得分:0)
您是否尝试过第二个循环中的Object.values(section)
?
由于第二条语句似乎将内容索引为数组。也许您可以提供有关数据结构的更多信息,以进一步帮助您。