У меня проблема с созданием таблицы реакции, на самом деле у меня есть этот код
render() {
var tableData = [
{name: this.state.users}
];
var tableRow = [];
for(var x = 1; x <= this.state.users.lenght; x++) {
tableRow.push(this.state.users[x]);
if (x % 4 == 0) {
tableData.push(tableRow);
tableRow = [];
}
}
return (
<Table1>
{tableData.map((row, index) => {
return (
<tr key = {row + index}>
{row.map((cell, index) => {
return (
<td key = {"cell_" + index}>{cell}</td>
);
})}
</tr>
);
})}
</Table1>
в моем tableData у меня есть некоторые данные firebase, которые извлекаются правильно, но у меня проблема с помещением их в ячейку таблицы, на самом деле с этим кодом таблицы я получил ошибку «TypeError: row.map не является функцией» Как я могу решить эту проблему ? Спасибо :)
добавил это в вопрос :)
this.state.users.lenght -> this.state.users.length


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


.map - это метод массивов, а tableData[0] - это не массив, это объект ({name: this.state.users}). Непонятно, что там творится, может, убрать? tableData[1] и далее будут массивами и должны правильно отображаться.
Что ж, думаю, я не могу его удалить :) как мне сделать tableData массивом? ;)
tableData - это массив, но не первый элемент в нем. Вы выполняете tableData.map( row => row.map( ... )), что означает, что каждый row также должен быть массивом. Но первый row - это объект. Я не могу сказать, как преобразовать его в массив, потому что не знаю, для чего он нужен. Почему вы решили поместить его в массив?
Допустим, я получаю имена пользователей из базы данных firebase, я хочу поместить их все в таблицу и сделать их интерактивными для извлечения данных пользователя, по которым щелкнули мышью, я читал, что размещение данных в массиве было бы лучшим вариантом для этого :) спасибо за ваше время путь
Попробуйте так: вместо var tableData = [{name: this.state.users}] просто напишите var tableData = []. Теперь он рендерится? Чего не хватает?
Он отображает имена пользователей, но только в одной ячейке, также их 4 в базе данных, в то время как приложение отображает только 3, поэтому один отсутствует
Это потому, что ваш цикл начинается с 1 вместо 0.
Во-первых, tableData содержит первое значение как {name: this.state.users}, которое не является массивом, и, следовательно, row.map завершится ошибкой.
Во-вторых, в length есть опечатка
for(var x = 1; x <= this.state.users.length; x++) {
.map доступен только на массивах, и в вашем случае row не является также массивами (tableData[0] is not array).
можно
console.info(tableData)и показать нам результат?