antd的Table表格默认会勾选上次勾选的,怎么清除

我设置了默认勾选13,第一次提交(132)是对的,第二次,页面上还勾选着上次提交的,没有按getCheckboxProps配置的渲染,然后onChange这,输出的是上一次提交的(132)+本次默认(13)+新勾的(45)= [1, 3, 2, 1, 3, 4, 5]
我是百思不得其解。



class User extends Interval {
    constructor(props) {
        super(props);
        this.state = {
            synCode: [],
        }
    }

    render() {
        console.log(this.state.synCode);
        const _this = this;
        const rowSelection = {
            getCheckboxProps(record) {
                return {
                    defaultChecked: record.leader === 1, // 配置默认勾选的列
                };
            },
            onChange(selectedRowKeys) {
                console.log('新来的',selectedRowKeys);
                // console.log('原来的',_this.state.synCode);
                _this.setState({synCode: selectedRowKeys})

            },
        };
       
        return (
            <Table rowSelection={rowSelection} columns={columns} dataSource={this.state.data} />
        );
    }
}
阅读 10.8k
4 个回答

@moveStar 这个表格,我是封装成一个组件用的,之后我给这个组件加了一个key就解决了。我看网上各种说清selectedRowKeys的,没弄明白怎么清。

当想清除勾选的时候,设置this.state.selectedRowKeys=[];

const rowSelection = {
    onChange: (selectedRowKeys, selectedRows) => {
            this.state.nowIds = selectedRowKeys.join(',');
            this.state.selectedRowKeys = selectedRowKeys;
            this.setState({
                selectedRowKeys:this.state.selectedRowKeys,
            })
        },
        getCheckboxProps: record => ({
            disabled:record.receiveStatus !=0,
            receiveStatus: record.receiveStatus,
        }),
        selectedRowKeys:this.state.selectedRowKeys,
    };

操作完成后,设置selectedRow: [],selectedKeys: []

getCheckboxProps: record => ({
    disabled: this.props.editStatue,
    checked: (this.props.selectedRowKeys.indexOf(record.Id)>-1?true:false),
}),

用checked

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题