javascript - React 嵌套渲染

标签 javascript reactjs jsx

我有一个包含多个数组的对象,例如:

const Items = {
Deserts: [{name:cookies}, {name:chocolate}],
Fruits: [{name:apple}, {name:orange}]
...
}

我想将其呈现为:

<title>Deserts</title>
Cookies
Chocolate
<title>Fruits</title>
Apple
Orange

所以我首先渲染类型:


return <Grid>
    {Object.keys(Items).map(type => {
        return <Box key={type}>
            {type} // <== this would be the title, Fruits or whatever
            {this.createCard(Items[type])}
        </Box>
    })}
</Grid>

然后我要添加每个类型的内容:

createCard = (items) => {
  return <Box>
       {items.forEach(item => {
           return <div>{item.name}</div>
       })}
  </Box>
}

不返回内容,如果我只是添加一些预定义的内容而不是 forEach 循环,它工作正常。

最佳答案

forEach 方法仅遍历所有项目但不返回任何内容。相反,您要使用的是 map。 另外,确保在返回值超过一行时将其包装起来:

createCard = (items) => {
  return (<Box>
       {items.map(item => {
           return <div>{item.name}</div>
       })}
  </Box>);
}

如果您不这样做,它就像在第一行之后引入分号一样工作。所以,实际上,您当前的代码相当于:

createCard = (items) => {
  return <Box>;
  // The code below will never be executed!
       {items.forEach(item => {
           return <div>{item.name}</div>
       })}
  </Box>
}

关于javascript - React 嵌套渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59000724/

相关文章:

javascript - 如何在 JSX 中循环尝试数据

javascript - React JS如何显示数组内包含数组的JSON

javascript - 在 PubNub 中更新客户端的 UUID

javascript - 如何从 angularjs 应用程序的输入字段中获取 getText()

css - 加载 CSS 后渲染 SVG(React 样式组件)

javascript - 使用嵌套对象调用 setState 不会正确更新状态

javascript - setState 函数未定义

javascript - 在awaitReaction之后访问 react 集合node.js

javascript - ng-click 在嵌套的 ng-click 中触发了两次

reactjs - 如何使用样式组件更改 antd 轮播点的形状和颜色