Reactjs 中 return 简单 ListItem 的嵌套循环 - -Object.values 和 Object.keys

Nested loop to return simple ListItem in Reactjs - -Object.values and Object.keys

真是难倒了。我正在尝试为对象数组中每个值的每个键创建一个 ListItem 。当我记录 item 时,它 returns 我正在寻找的字符串形式的键。伟大的!但是,列表项永远不会呈现在页面上。

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>
);

任何见解都会有所帮助。

请尝试按如下方式构建虚拟 dom 列表:

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>
);

您是否尝试过在第二个循环中完成 Object.values(section)

因为从你的第二个陈述来看,内容似乎被索引为一个数组。也许你可以提供更多关于数据结构的信息来帮助你。

这是因为你在外循环中使用了 forEach 而它实际上没有 return 任何东西,所以 Listchildren 属性是undefined。试试这个:

return (
 <div>
  <List className="list">
   {Object.values(props.sectionInfo).map(section => {
   return Object.keys(section).map((item, index) => {
    return (
     <ListItem button className='list-item'>
      <ListItemText primary={item} />
     </ListItem>
     )
   });
  })}
  </List>
 </div>
);