#javascript #reactjs #dictionary
#javascript #reactjs #словарь
Вопрос:
У меня есть вопрос относительно «карты» с массивом и объектами.
Я пытаюсь отобразить в каждой строке таблицы имя и имя пользователя.
Я думаю, что есть что-то, что я неправильно понял с map, потому что я отображаю имя обоих пользователей в одной строке.
Должен ли я проходить через «для» массива users, чтобы сгенерировать одну строку для каждого пользователя?
function DisplayUsersTable() {
let users = [
{ id: 1, firstName: "John", lastName: "Connor" },
{ id: 2, firstName: "Geralt", lastName: "Rivia" }
]
return (
<table>
<thead>
<tr>
<th> firstName </th>
<th> lastName</th>
</tr>
</thead>
<tbody>
<tr>
{users.map((user, index) =>(<td key={index}>{user.lastName}</td>))}
</tr>
</tbody>
</table>
)
}
Отображение:
firstName lastName
Connor Rivia
Спасибо!
Комментарии:
1. «Должен ли я проходить через «for of» массива users, чтобы сгенерировать одну строку для каждого пользователя? » вам не нужно — вы можете просто использовать
map
для этого. Проблема в том, что вы генерируете по одному<td>
для каждого пользователя с вашим текущим кодом. Похоже, вы хотите по одному<tr>
для каждого.2. Спасибо за ваш отзыв, все в порядке. Я неправильно понял, как работает map! Хорошего дня 🙂
Ответ №1:
Вы на самом деле неправильно поняли, что делает map и что делает ваш HTML. итак, ваша карта выполняет итерацию по заданному вами массиву и отображает каждый элемент массива так, как вы хотите, поэтому использование map
заключается в переборе по массиву, чтобы вы могли получить доступ к одному элементу массива. HTML фактически позволяет вам управлять тем, как вы хотите распечатать свои данные. итак, проблема не в вашей карте, а в вашем HTML <td>
.
Комментарии:
1. Вы правы, я неправильно понял итерационную часть «map». Я просто изменил html, и он работает нормально. Я также провел два или три других теста, и я думаю, что понял, как это работает! Большое вам спасибо за ваше объяснение 🙂 Хорошего дня!
Ответ №2:
Теперь это работает:
function ShowUserTable() {
let users = [
{ firstName: "John", lastName: "Connor" },
{ firstName: "Geralt", lastName: "Rivia" },
{ firstName: "Nathan", lastName: "Drake" }
]
return (
<table>
<thead>
<tr>
<th> firstName </th>
<th> lastName</th>
</tr>
</thead>
<tbody>
{users.map((user, index) =>(
<tr key={index}>
<td>{user.firstName} </td>
<td>{user.lastName} </td>
</tr>
))}
</tbody>
</table>
)
}