表格点击当前行的勾选按钮后,点击分页之后勾选的状态仍然保存。

主要是利用

rowSelection配置项中的onSelect,onSelectAll 回调

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是用ts写完整的代码

/**
 * @description 表格选择行配置项
 */
export const useRowSelection = <T>() => {
  const [checkedRowKeys, setCheckedRowKeys] = useState<Key[]>([])
  const [checkedRows, setCheckedRows] = useState<T[]>([])

  const rowSelection: TableRowSelection<T> | undefined = {
    selectedRowKeys: checkedRowKeys,
    fixed: true,
    onSelect: (record, selected, selectedRow) => {
      if (selected) {
        // 添加
        // @ts-ignore
        setCheckedRowKeys([...checkedRowKeys, record.accountsOrder])
        setCheckedRows([...checkedRows, record])
      } else {
        // @ts-ignore
        const subCheckedKeys = checkedRowKeys.filter((item: Key) => item !== record.accountsOrder)
        // @ts-ignore
        const subCheckedRows = checkedRows.filter((item: T) => item.accountsOrder !== record.accountsOrder)
        setCheckedRowKeys(subCheckedKeys)
        setCheckedRows(subCheckedRows)
      }
    },
    onSelectAll: (selected, selectedRows, changeRows) => {
      if (selected) {
        const addCheckedKeys = changeRows.map((item: T) => {
          // @ts-ignore
          return item.accountsOrder
        })
        setCheckedRowKeys([...checkedRowKeys, ...addCheckedKeys])
        setCheckedRows([...checkedRows, ...changeRows])
      } else {
        const subCheckedKeys = checkedRowKeys.filter((ite: Key) => {
          return !changeRows.some((item: T) => {
            // @ts-ignore
            return item.accountsOrder === ite
          })
        })
        const subCheckedRows = checkedRows.filter((ite: any) => {
          return !changeRows.some((item: T) => {
            // @ts-ignore
            return item.accountsOrder === ite.accountsOrder
          })
        })
        setCheckedRowKeys(subCheckedKeys)
        setCheckedRows(subCheckedRows)
      }
    },
    columnWidth: 64,
    // selections: [
    //   Table.SELECTION_ALL,
    //   Table.SELECTION_INVERT,
    //   Table.SELECTION_NONE
    // ],
    type: 'checkbox'
  }

  return {
    checkedRowKeys,
    checkedRows,
    setCheckedRowKeys,
    setCheckedRows,
    rowSelection
  }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现批量删除的流程一般如下: 1. 给“批量删除”按钮绑定点击事件。 2. 在点击事件中,获取所有被选中的checkbox元素。 3. 遍历每个被选中的checkbox元素,获取其对应的信息。 4. 删除每个被选中的信息。 下面是一个简单的示例代码: HTML: ```html <table> <thead> <tr> <th><input type="checkbox" id="select-all"></th> <th>Name</th> <th>Age</th> <th>Gender</th> </tr> </thead> <tbody> <tr> <td><input type="checkbox"></td> <td>John</td> <td>25</td> <td>Male</td> </tr> <tr> <td><input type="checkbox"></td> <td>Jane</td> <td>30</td> <td>Female</td> </tr> </tbody> </table> <button id="delete-selected">批量删除</button> ``` JavaScript: ```js // 获取“全选”checkbox元素 var selectAllCheckbox = document.getElementById('select-all'); // 获取“批量删除”按钮元素 var deleteButton = document.getElementById('delete-selected'); // 给“全选”checkbox元素绑定点击事件 selectAllCheckbox.addEventListener('click', function() { // 获取所有checkbox元素 var checkboxes = document.querySelectorAll('tbody input[type="checkbox"]'); // 设置所有checkbox的选中状态 checkboxes.forEach(function(checkbox) { checkbox.checked = selectAllCheckbox.checked; }); }); // 给“批量删除”按钮绑定点击事件 deleteButton.addEventListener('click', function() { // 获取所有被选中的checkbox元素 var selectedCheckboxes = document.querySelectorAll('tbody input[type="checkbox"]:checked'); // 遍历每个被选中的checkbox元素,获取其对应的信息,并删除该信息 selectedCheckboxes.forEach(function(checkbox) { var row = checkbox.parentNode.parentNode; row.parentNode.removeChild(row); }); }); ``` 注意,在实际开发中,还需要考虑一些边界情况,比如没有勾选任何信息时,点击“批量删除”按钮应该提示用户选择信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值