【发布时间】:2023-03-29 17:21:01
【问题描述】:
如何使用列作为属性引用来映射电影。
喜欢
{movies.map(item => {columns.map(column => item.column.path)})}
但是使用这个我得到的结果是undefined
电影包含有关电影的所有详细信息
const movies = [
{
_id: "5b21ca3eeb7f6fbccd471815",
title: "Terminator",
genre: { _id: "5b21ca3eeb7f6fbccd471818", name: "Action" },
numberInStock: 6,
dailyRentalRate: 2.5,
publishDate: "2018-01-03T19:04:28.809Z",
liked: true,
},
{
_id: "5b21ca3eeb7f6fbccd471816",
title: "Die Hard",
genre: { _id: "5b21ca3eeb7f6fbccd471818", name: "Action" },
numberInStock: 5,
dailyRentalRate: 2.5,
},
{
_id: "5b21ca3eeb7f6fbccd471817",
title: "Get Out",
genre: { _id: "5b21ca3eeb7f6fbccd471820", name: "Thriller" },
numberInStock: 8,
dailyRentalRate: 3.5,
},
{
_id: "5b21ca3eeb7f6fbccd471819",
title: "Trip to Italy",
genre: { _id: "5b21ca3eeb7f6fbccd471814", name: "Comedy" },
numberInStock: 7,
dailyRentalRate: 3.5,
},
{
_id: "5b21ca3eeb7f6fbccd47181a",
title: "Airplane",
genre: { _id: "5b21ca3eeb7f6fbccd471814", name: "Comedy" },
numberInStock: 7,
dailyRentalRate: 3.5,
}];
列包含访问电影所需的所有属性
const columns = [
{ path: "title", label: "Title" },
{ path: "genre", label: "Genre" },
{ path: "numberInStock", label: "Stock" },
{ path: "dailyRentalRate", label: "Rate" }];
我知道这个问题可以使用 2 个循环来解决。
获取每部电影后的电影的1个外部循环,使用第二个内部循环访问属性
更新:得到@rory-mccrossan 的回答后
此外,我怎样才能将这些数据映射到一个表格中,这样
这是与我使用的相同的代码部分。
import React, { Component } from "react";
import _ from "lodash";
class TableBody extends Component {
renderCell = (item, column) => {
if (column.content) return column.content(item);
return _.get(item, column.path);
};
createKey = (item, column) => {
return item._id + (column.path || column.key);
};
render() {
const { data, columns } = this.props;
return (
<tbody>
{data.map((item) => (
<tr key={item._id}>
{columns.map((column) => (
<td key={this.createKey(item, column)}>
{this.renderCell(item, column)}
</td>
))}
</tr>
))}
</tbody>
);
}
}
export default TableBody;
但我收到 错误:对象作为 React 子项无效(找到:带有键 {_id, name} 的对象)。如果您打算渲染一组子项,请改用数组。)
主要问题是如何在表格中映射数据
【问题讨论】:
-
"但是使用这个我得到的结果是
undefined" - 因为{ ... }创建了一个块,因此“删除”了隐含的return所以“内部”.map()调用不返回任何内容 ->.map(item => columns.map(...))
标签: javascript jquery reactjs object react-component