[英]How are properties defined on React elements using JSX 'collected' into a single object?
[英]How to wrap JSX elements in a single div when using .map() with React?
我想做的事:
將項目列表呈現為另一個組件內部的組件
<div>
...
<RenderBuildings buildings={this.props.buildingData} />
...
</div>
怎么了:
我收到此錯誤:
Syntax Error: Adjacent JSX elements must be wrapped in an enclosing tag
我的代碼如下所示:
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>
)}
)
}
我懷疑正在發生的事情:
似乎很清楚,整個內容應該以某種方式包裝在div中,但是我不確定如何使用map函數來實現這一點。 您如何在其中包裝整個響應?
請嘗試以下操作,當主體在花括號中時, .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> ); }
我假設你正在建一張桌子
import React, { Fragment } from 'react'
const RenderBuildings = (props) => {
return (
<Fragment>
{
props.buildings.allComps.map((building, index) => {
let id = index + 1
return (
<TableRow key={id}>
<TableRowColumn style={{width: 12}}>{id}</TableRowColumn>
<TableRowColumn>{building.name}</TableRowColumn>
<TableRowColumn>{building.address}</TableRowColumn>
<TableRowColumn>{building.status}</TableRowColumn>
</TableRow>
)
})
}
</Fragment >
)
}
我相信這是您要實現的目標:
const RenderBuildings = (props) => { return ( <div> props.buildings.allComps.map((building, index) => { let id = index + 1 <TableRow key={id}> <TableRowColumn style={{width: 12}}>{id}</TableRowColumn> <TableRowColumn>{building.name}</TableRowColumn> <TableRowColumn>{building.address}</TableRowColumn> <TableRowColumn>{building.status}</TableRowColumn> </TableRow> )} </div> )
This is correct code for you..
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>
);
}
As you mention you try this but i think you forgot to add return in map funtion. Because I was also done similar mistake when i just start coding in es6.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.