在使用带有React的.map()时如何在单个div中包装JSX元素?

you*_*ter 1 javascript reactjs

我想做的事:

将项列表呈现为另一个组件内的组件

<div>
...
  <RenderBuildings buildings={this.props.buildingData} />
...
</div>
Run Code Online (Sandbox Code Playgroud)

怎么了:

我收到此错误:

Syntax Error: Adjacent JSX elements must be wrapped in an enclosing tag
Run Code Online (Sandbox Code Playgroud)

我的代码是什么样的:

const RenderBuildings = (props) => {
       return (
         props.buildings.allComps.map((building, index) => {
            let id = index + 1
              <TableRow>
                <TableRowColumn style={{width: 12}}>{id}</TableRowColumn>
                <TableRowColumn>{building.name}</TableRowColumn>
                <TableRowColumn>{building.address}</TableRowColumn>
                <TableRowColumn>{building.status}</TableRowColumn>
              </TableRow>
            )}
          )
  }
Run Code Online (Sandbox Code Playgroud)

我怀疑发生了什么:

似乎非常清楚,整个事情应该以某种方式包含在div中,但我不确定如何使用map函数来完成它.你如何将整个回应包裹在其中?

Kev*_*ian 6

尝试下面,当body处于花括号时.map需要return声明.

const RenderBuildings = (props) => {
  return (
    <div>
    {props.buildings.allComps.map((building, index) => {
      let id = index + 1;
      return (
        <TableRow key={'row' + index}>
          <TableRowColumn style={{width: 12}}>{id}</TableRowColumn>
          <TableRowColumn>{building.name}</TableRowColumn>
          <TableRowColumn>{building.address}</TableRowColumn>
          <TableRowColumn>{building.status}</TableRowColumn>
          </TableRow>
      );
     });}
    </div>
  );
}
Run Code Online (Sandbox Code Playgroud)