#javascript #reactjs
#javascript #reactjs
Вопрос:
Привет, я хочу динамически создавать табличный пользовательский интерфейс.
У меня есть headers
массив, подобный этому
headers = [
{
text: "id",
value: "id",
},
{
text: "Name",
value: "name",
},
{
text: "Description",
value: "description",
},
{
text: "Created",
value: "createdAt",
},
и items
массив, подобный этому
items = [
{
id: 1,
name: "Pathum",
description: "Never give up",
createdAt: new Date(),
},
],
В моем приложении
export default function App() {
return (
<div>
<table>
<tr>
{
headers.map(header=>(<th>{header.text}</th>))
}
</tr>
{
items.map(row=>(
<tr>
{
headers.map(({value})=>(
row[value]
))
}
</tr>
))
}
</table>
</div>
);
}
С отображением заголовков таблиц все в порядке. Проблема заключается в рендеринге табличных данных. Это выдает ошибку.
Объекты недопустимы как дочерние объекты React
Это пример живого кода https://stackblitz.com/edit/react-rj3unu?file=src/App.js
Почему это могло произойти? Любая помощь!
Комментарии:
1. Поскольку вы сопоставляете дважды, вы возвращаете вложенный массив (матрицу)…
Ответ №1:
Это из-за new Date()
.
Вы можете преобразовать его в строку с помощью new Date().toString()
Объекты недопустимы как дочерние объекты React
As new Date()
возвращает Date
объект.
Ответ №2:
Вам также не хватает тега данных таблицы 🙂
<td>{row[value]}</td>