antd-React中Table表格的复选框问题

本文介绍了解决React Table组件中复选框状态残留的问题。通过正确配置rowSelection属性并利用onChange事件来同步更新选中状态,可以有效避免重新渲染表格时复选框的状态错误。

问题描述

当使用React的Table组件中的复选框时,重新渲染表格和分页可能会出现表格残留问题,复选框依然选中。ps:(如果你的复选框点了一下全选了,那么应该是你没有给每条数据设置单独的key设置了就好了)


原因分析:

表格数据切换时未重置复选框选中信息


解决方案:

 解决方法,配置Table中的rowSelection属性,在onChange事件中拿到选中的selectedRowKeys。(selectedRowKeys就是你当前复选框选中的数据key) 然后设置selectedRowKeys为onChange选中的值

const [selectedRowKeys,setSelectedRowKeys] = useState([])    

const ListRowSelection = {
            type: 'checkbox',
            onChange: (selectedRowKeys, selectedRows) => {
              setSelectedRowKeys(selectedRowKeys)
            },
            selectedRowKeys:selectedRowKeys
       };






                         <Table
                            columns={column}//表头
                            dataSource={dataSource}//数据
                            rowSelection={ListRowSelection}
                            />

如果重新渲染表格就把值清空就好了

     setSelectedRowKeys([])

如果有什么不同的意见,请大家指出

Ant Design 的 Table 组件提供了一个 `rowSelection` 属性,用于择行。如果要在 Table 组件外实现全,可以通过以下步骤实现: 1.Table 组件外部创建一个复选框,用于全/取消全。 2.复选框的 `onChange` 事件中,通过 Table 组件的 `rowSelection` 属性的 `onChange` 方法来处理全/取消全的逻辑。 以下是一个简单的示例代码: ``` import React, { useState } from 'react'; import { Table } from 'antd'; function MyTable(props) { const [selectedRowKeys, setSelectedRowKeys] = useState([]); const handleSelectAll = (e) => { const isChecked = e.target.checked; const keys = props.dataSource.map((item) => item.key); setSelectedRowKeys(isChecked ? keys : []); }; const rowSelection = { selectedRowKeys, onChange: (selectedRowKeys) => { setSelectedRowKeys(selectedRowKeys); }, }; const columns = [ { title: 'Name', dataIndex: 'name', }, { title: 'Age', dataIndex: 'age', }, { title: 'Address', dataIndex: 'address', }, ]; return ( <> <div style={{ marginBottom: '16px' }}> <input type="checkbox" onChange={handleSelectAll} /> <span style={{ marginLeft: '8px' }}>Select All</span> </div> <Table dataSource={props.dataSource} columns={columns} rowSelection={rowSelection} /> </> ); } export default MyTable; ``` 在上面的代码中,我们在 Table 组件外部创建了一个复选框,并在 `handleSelectAll` 方法中处理全/取消全的逻辑。在 `rowSelection` 属性中,我们将 `selectedRowKeys` 和 `onChange` 方法传递给了 Table 组件,用于处理行择的逻辑。通过这种方式,我们就可以在 Table 组件外部实现全/取消全的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值