学习记录473@react如何自定义一个表格?

如果说需要一个非规则化的表格,使用网上的组件或许就无法满足要求,那么,如何自定义一个表格呢?
在知乎上找到一篇比较好的文章,本文试图在教会我们如何自定义一个表格的布局。
链接如下:
https://zhuanlan.zhihu.com/p/362473728

React中,我们可以使用Ant Design库提供的表格组件和useState Hook来创建一个全选反选的功能。这里是一个简单的示例: ```jsx import React, { useState } from 'react'; import { Table, Input, Button } from 'antd'; const columns = [ { title: 'Name', dataIndex: 'name', key: 'name', }, // 添加一个自定义列处理全选 { title: 'Actions', render: (text, record) => ( <div> {/* 初始状态为未选中 */} <Input type="checkbox" checked={record.isSelect} onChange={(e) => handleCheckboxChange(record.key, e.target.checked)} /> </div> ), }, ]; const handleCheckboxChange = (key, isChecked) => { const isCheckedList = [...selectedKeys]; // 获取当前已选的记录ID列表 if (isChecked) { isCheckedList.push(key); } else { isCheckedList.splice(isCheckedList.findIndex((item) => item === key), 1); } setSelectedKeys(isCheckedList); // 更新状态 handleToggleAll(isChecked); // 如果全选则切换其他所有行 }; const handleToggleAll = (checked) => { setAllSelectedKeys([...selectedKeys].every((item) => item === allSelectedKey) ? [] : allSelectedKey); // 遍历表格数据并更新isSelect属性 setData((prevData) => prevData.map((item) => Object.assign({}, item, { isSelect: checked || item.key === allSelectedKey, }) ) ); }; // 初始化状态 const [data, setData] = useState([ { key: '1', name: 'Row 1' }, { key: '2', name: 'Row 2' }, // ... ]); const [selectedKeys, setSelectedKeys] = useState([]); const [allSelectedKey, setAllSelectedKey] = useState(null); ReactDOM.render( <Table columns={columns} dataSource={data} selectedKeys={selectedKeys} onChange={handleCheckboxChange} />, document.getElementById('container') ); // 全选按钮 <Button onClick={() => handleToggleAll(!allSelectedKey)}> {allSelectedKey ? '取消全选' : '全选'} </Button> ``` 在这个例子中,我们添加了一个自定义的“Actions”列,其中包含一个复选框。当用户点击某一行的复选框时,会触发`handleCheckboxChange`函数,更新选定记录的状态。同时,我们还提供了一个全局的全选按钮,点击它会遍历所有行并更新它们的`isSelect`属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值