1

I am making an interactive react-table. My goal is to make a table that can be an editable per row when clicking on a button in a table cell.

I have designed an EditableCell like the following:

import React, {useState} from "react";

export const EditableCell = ({
                                 value: initialValue,
                                 row: Row,
                                 column: {id, editable, state},
                                 isEditing,

                             }) => {
    // We need to keep and update the state of the cell normally
    const [value, setValue] = React.useState(initialValue);
    const {index} = Row;

    const onChange = e => {
        setValue(e.target.value);
    };

    // We'll only update the external data when the input is blurred
    const onBlur = () => {
        updateItem(index, id, value);
    }

    // If the initialValue is changed external, sync it up with our state
    React.useEffect(() => {
        setValue(initialValue)
    }, [initialValue]);

    let retObj = null;
    if (isEditing && editable) {
        switch (id) {
            default:
                retObj = <input className="input-edit w-100" value={value} onChange={onChange} onBlur={onBlur}/>;
                break;
        }
    } else {
               retObj = value
    } 
    return retObj;
}

In my columns i have:

{
 accessor: '[editButton]',
        Cell: (cellObj) => <button onClick={() => handleClickEditRow(cellObj.row.index)>Edit</button>
}

How can i now edit the 'isEditing' property from my 'EditableCell'?

Kmietek HD
  • 11
  • 2

0 Answers0