在React中使用Ant Design的Checkbox组件实现多组复选框的全选和单选功能,可以通过状态管理来控制。以下是一个简单的示例:
import React, { useState } from 'react';
import { Checkbox, Button } from 'antd';
const CheckboxGroup = () => {
const [checkedList, setCheckedList] = useState([]);
const [indeterminate, setIndeterminate] = useState(false);
const [checkAll, setCheckAll] = useState(false);
const onChange = (list) => {
setCheckedList(list);
setIndeterminate(!!list.length && list.length < plainOptions.length);
setCheckAll(list.length === plainOptions.length);
};
const onCheckAllChange = (e) => {
setCheckedList(e.target.checked ? plainOptions.map(option => option.label) : []);
setIndeterminate(false);
setCheckAll(e.target.checked);
};
const plainOptions = [
{ label: '复选框A', value: 'A' },
{ label: '复选框B', value: 'B' },
{ label: '复选框C', value: 'C' },
];
return (
<>
<Checkbox
indeterminate={indeterminate}
onChange={onCheckAllChange}
checked={checkAll}
>
全选
</Checkbox>
<div style={{ margin: '10px 0' }}>
{plainOptions.map((option) => (
<Checkbox
key={option.label}
value={option.label}
checked={checkedList.includes(option.label)}
>
{option.label}
</Checkbox>
))}
</div>
</>
);
};
export default CheckboxGroup;
在这个示例中,CheckboxGroup
组件使用了useState
钩子来管理复选框的选中状态。checkedList
数组存储了所有选中的复选框的标签,indeterminate
状态用于处理全选框处于半选状态的情况,checkAll
状态用于跟踪全选框是否被选中。onChange
和onCheckAllChange
方法用于处理复选框的变化,更新对应的状态。