Я хочу изменить значения в таблице в React - PullRequest
0 голосов
/ 29 декабря 2018

Я хочу внести изменения в событие, чтобы пользователь мог напрямую изменять значения в таблице.Текущие данные связаны с 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 в объект.Так что, если нужно изменить значение поля в этой строке в объекте?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...