#javascript #reactjs #material-table
#javascript #reactjs #материал-таблица
Вопрос:
Я пытаюсь добавить более одной строки в таблицу mat, поэтому у меня есть поле, в котором пользователь вводит число, например: «2»
затем я спрашиваю, хочет ли он представить его как одну строку или отдельно, если все находится в одной строке, все в порядке, но когда я пытаюсь добавить отдельно, он ломается и вводит только одну строку вместо числа, написанного
затем выполните цикл для и setData()
внутри for
const [data, setData] = useState([]);
const json = {
id: id,
name: null,
};
const newArr3 = [];
for (let index = 0; index < number; index ) {
newArr3.push(json);
postRequest(json);
setData(newArr3);
}
<MaterialTable
columns={columns}
data={data}
title="Table 2"
options={{
exportButton: true,
filtering: true,
actionsColumnIndex: -1,
headerStyle: {
backgroundColor: '#01579b',
color: '#FFF'
},
rowStyle: {
backgroundColor: '#EEEEEE',
}
}}
/>
Я видел у разработчика components react tools, что он вводит 2 объекта внутри массива data
, но отображает только один, возможно, потому, что он имеет то же tabledata {id:0}
самое, когда это было бы: tabledata {id:0}
и tabledata {id:1}
но я не знаю, как это сделать.
Заранее спасибо
Комментарии:
1. Проблема может заключаться в том, что вы помещаете точный объект json в качестве ссылки в свой массив. Таким образом, в основном вы добавляете
number
один и тот же объект. Чтобы изменить идентификатор, одновременно вставляя копию в массив, вы можете попробовать:newArr3.push({...json, id: index})
2. какое значение
number
? существует вероятность, что вы на самом деле просто добавляете данные один раз. Кроме того, столбцы неизвестны, логика выглядит нормально, но сначала зарегистрируйте данные и убедитесь, что в них больше одного элемента3. @IsaacSekamatte number = 2 тогда он добавляет только одну строку, я имею в виду одну строку
4. @TimDithmer я уже пробовал ее деструктурировать и даже добавить newArr3.push({…json, tableData:{id:index}}), и он по-прежнему отображает только один скриншот строки
5.
newArr3.push({...json, tableData:{id:index}})
создал бы объект, выглядящий следующим образом:{id: id, name: null, tableData: {id: 1}}
дляindex = 1
. Вы пробовали это в точности так, как я написал?
Ответ №1:
Попробуйте указать index
for
цикл как id
.
const newArr3 = [];
for (let index = 0; index < number; index ) {
const json = {
id: index,
name: null
}
newArr3.push(json);
postRequest(json);
setData(newArr3);
}
Комментарии:
1.скриншот 1 таблица, отображающая одну строку скриншот 2 информация о массиве
2. Если я закрою модальный файл без обновления (F5) и снова открою его, поскольку он сохранен в состоянии, он показывает 2 строки, но не в начале