我正在开发一个React应用程序,该应用程序从API提取数据并将其呈现到表中。我有3个组成部分:Row
,Body
和Table
。 Table
获取数据,将其传递到Body
,Body
将其传递到Row
,然后呈现单元格。
我面临的问题是Row
中的数据既是文本又是图像。这是我的Row
组件的外观:
const Row = props => {
return(
props.data.map(row =>
<tr key={row.id}>
{props.cols.map(col =>
<td>{row[col.name]}</td>
)}
</tr>
)
);
}
从API提取的数据采用以下格式:
data = [
{
"firstName": "Jack",
"lastName": "Sparrow",
"id": "jckspr"
}
]
但是,我还需要通过<img src="images/logo.png">
在第四列中呈现静态小图像。但是我无法使用已经实现的当前代码逻辑来渲染该图像,即无法在Body
中渲染该图像:
<Row data={data} cols={tableHeaders}>
,其中tableHeaders
是
[
{ header: "First Name", name: "firstName" },
{ header: "Last Name", name: "lastName" },
{ header: "id", name: "id" },
{ header: "Image", name: "image" }
]
如何在保持可重用和可扩展的代码体系结构的同时实现所需的功能?
答案 0 :(得分:0)
为单元格创建一个新组件
const Cell = ({ colName, value }) => {
if (colName === 'image') {
return <img src="images/logo.png" />;
}
// Other if's for other possible cell types
// ...
// Otherwise return the value
return value;
}
然后更新行组件:
const Row = props => {
return(
props.data.map(row =>
<tr key={row.id}>
{props.cols.map(col =>
<td>
<Cell colName={col.name} value={row[col.name]} />
</td>
)}
</tr>
)
);
}