Я построил Реагировать таблицу следующим образом:Реагировать редактируемую таблицу
const Table = ({data}) => {
return (
<table className="table table-bordered">
<thead>
<tr>
<th>Qty</th>
<th>Description</th>
<th>Price (£)</th>
</tr>
</thead>
<tbody>
{data.map((row) => {
return (
<tr>
<td><input type='number' className='form-control' step='1' min="1" value={row[0]}/></td>
<td><input type='text' className='form-control' value={row[1]}/></td>
<td><input type='text' className='form-control' placeholder='6.00' value={row[2]}/></td>
</tr>
);
})}
</tbody>
</table>
);
};
Table.propTypes = {
data: React.PropTypes.array.isRequired
};
export default Table;
В классе я использую этот компонент, я передаю данные в качестве параметра (который изначально пуст):
materials: [[],[],[],[],[],[],[],[],[],[]] //Initialise with 10 empty rows
<Table data={materials} />
Это создаст таблицу с 10 пустыми строками. Единственная проблема в том, что когда я ввожу данные в таблицу, массив данных, который я сопоставил, не обновляет данные, которые я ввел.
Я думаю, что мне нужно какое-то событие, где я могу обновить данные с снимкой, что было введено, но я не уверен, как это реализовать. Любая помощь будет принята с благодарностью.
Эй @Diego. Спасибо за удивительное решение. Это определенно направление, в котором я должен идти. Единственное, что я не вижу, это то, как я могу фактически получить данные, которые были введены из моего обратного вызова в родительском компоненте. Скажи мне, есть ли что-то, чего я здесь не вижу. Спасибо – Granttastic
Извините, я забыл поставить это в примере. Вы должны изменить объявление onChange на нечто вроде 'onChange = {(e) => onCellChange (index, 0, e.target.value}", а также добавить последний параметр в методе, чтобы получить значение от ввода. Я думаю, что он должен работать. –
Это трюк. Спасибо за ваше время! – Granttastic