Я хочу внести изменения в событие, чтобы пользователь мог напрямую изменять значения в таблице.Текущие данные связаны с MongoDB.Однако, если в текущем TextField происходит событие onchange, его значение обычно не изменяется.Как мы должны решить это?
Я пытался связать событие, объявив его как функцию, а не как переменную, но это было бесполезно.
const handleChange = (e, name, i) => {
const { value } = e.target;
this.setState(state => ({
data: state.data.map(
(row, j) => (j === i ? { ...row, [name]: value } : row)
)
}));
};
const row = (
x,
i,
header,
startEditing,
editIdx,
handleChange,
handleRemove,
stopEditing
) => {
let currentlyEditing = editIdx === i;
return (
<TableRow key={`tr-${i}`} selectable= 'false'>
{header.map((y, k) => (
<CustomTableCell key={`trc-${k}`}>
{currentlyEditing ?
<TextField
name={y.prop}
onChange={e => handleChange(e, y.prop, i)}
value={x[y.prop]}
/>
:
x[y.prop]
}
</CustomTableCell>
))}
<CustomTableCell>
{currentlyEditing ? (
<CheckIcon onClick={() => stopEditing()} />
) : (
<EditIcon onClick={() => startEditing(i)} />
)}
</CustomTableCell>
<CustomTableCell>
<TrashIcon onClick={() => handleRemove(x)}/>
</CustomTableCell>
</TableRow>
);
};
Я думаю, что код теперь кажетсяизменить значение массива.Однако данные передаются из MongoDB в объект.Так что, если нужно изменить значение поля в этой строке в объекте?