Blog>
Snippets

Implementing Cell Editing in TanStack Table

Illustrate how to make a cell editable in TanStack Table, including capturing input and updating the table's state.
const [editCellValue, setEditCellValue] = React.useState('');
const [editColumnId, setEditColumnId] = React.useState(null);
const [editRowId, setEditRowId] = React.useState(null);
Initializes state to keep track of the value being edited, the ID of the column being edited, and the ID of the row being edited.
const updateMyData = (rowIndex, columnId, value) => {
  // Update your data and state here
};
Function to update the actual data based on cell edits. Implement accordingly to update your data source.
const editableCell = {
  Cell: ({ cell: { value, column, row }, }) => (
    <div
      contentEditable
      suppressContentEditableWarning
      onBlur={e => {
        setEditCellValue('');
        setEditColumnId(null);
        setEditRowId(null);
        updateMyData(row.index, column.id, e.target.innerText);
      }}
      onFocus={() => {
        setEditCellValue(value);
        setEditColumnId(column.id);
        setEditRowId(row.id);
      }}
    >
      {value}
    </div>
  ),
};
Defines an editable cell component. This component becomes editable when focused and updates data on blur.
const columns = React.useMemo(
  () => [
    {
      Header: 'Editable Column',
      accessor: 'yourAccessor',
      Cell: editableCell.Cell
    },
    // Add other columns here
  ],
  []
);
Defines columns for the TanStack Table, including setting one of the columns to use the editable cell component.