为什么我的反应表没有更新数据?

Rei*_*ran 6 javascript typescript reactjs react-table react-table-v7

我有一个反应表,我想删除或修改我的数据。我的所有单元格的代码如下。

    deleteTableElement = (row) => {
        let data = this.state.list.data;
        data.splice(row.id, 1);
        this.setState({
            list:{
                ...this.state.list,
                data:data
            }
        })
    };

    actionsCell = (columns) => {
        columns.push({
            Header: "Accion",
            Cell: (props) => {
                console.log(props);
                return (
                    <div
                        style={{
                            display: "flex",
                            justifyContent: "space-around",
                        }}
                    >
                        <i
                            onClick={() => this.deleteTableElement(props.row)}
                            className="material-icons"
                            style={{ color: "red", cursor: "pointer" }}
                        >
                            delete
                        </i>
                    </div>
                );
            },
        });
        return columns;
    };
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我想修改该项目。反应表没有更新。

Ada*_*dam 8

每当你的组件意外地没有更新时,都是因为你正在改变状态。从字面上看,100% 的情况下:

        let data = this.state.list.data;
        data.splice(row.id, 1); // <- splice mutates an array, mutating state is bad
        this.setState({
            list:{
                ...this.state.list,
                data:data
            }
        })
Run Code Online (Sandbox Code Playgroud)

应该:

        this.setState({
            list:{
                ...this.state.list,
                data:data.filter((d,i) => i !== row.id)
            }
        })
Run Code Online (Sandbox Code Playgroud)