react antd select组件添加全选功能
2023-06-13 09:15:30 时间
本文最后更新于 57 天前,其中的信息可能已经有所发展或是发生改变。
1、需求
最近遇到一个需求,一张表格中需要有个下拉框,antd官网中有相应的Select组件,但是由于数据比较多,用户需要一个全选的需求。即点击全选下拉框数据全部选中,再次点击取消全选即选中的数据清空。然后数据一条一条点击完后全选框会被选中,反之不会被选中。
2、实现代码
import React from 'react';
import 'antd/dist/antd.css';
import './index.css';
import { Form, Select, Checkbox, Divider } from 'antd';
class Domo extends React.Component {
formRef = React.createRef();
constructor(props) {
super(props);
this.state = {
selectStatus: false,
selectData: '',
};
}
render() {
const data = [];
for (let i = 0; i < 12; i++) {
const value = `${i.toString(36)}${i}`;
data.push({
label: value,
value
});
}
const { selectStatus } = this.state;
return (
<>
<Form ref={this.formRef}>
<Form.Item name="selectOptions">
<Select
mode="multiple"
placeholder="please choose"
allowClear
options={data}
onChange={(value) => {
this.setState({ selectData: value.join(',') });
if (value.length === data.length) {
this.setState({ selectStatus: true });
} else {
this.setState({ selectStatus: false });
}
}}
dropdownRender={(menu) => (
<>
<div
style={{ padding: '4px 8px 8px 12px', cursor: 'pointer' }}
>
<Checkbox
checked={selectStatus}
onChange={(e) => {
const a = data.map((item) => item.value);
if (e.target.checked) {
this.setState({
selectStatus: true,
selectData: a.join(','),
});
this.formRef.current.setFieldsValue({
selectOptions: data?.map((item) => item.value),
});
} else {
this.setState({
selectStatus: false,
selectData: '',
});
this.formRef.current.setFieldsValue({
selectOptions: [],
});
}
}}
>
全选
</Checkbox>
</div>
<Divider style={{ margin: '0' }} />
{menu}
</>
)}
></Select>
</Form.Item>
</Form>
<h3 style={{ position: 'fixed', bottom: '100px' }}>
选择的数据是:{this.state.selectData}
</h3>
</>
);
}
}
export default Domo;
3、效果预览
相关文章
- Vue3.0实现todolist(新建组件)
- Spring Cloud 中的分布式组件五花八门,我到底该怎么学?
- react 父子传值_react 父子组件传值 兄弟组件传值「建议收藏」
- react中类组件传值,函数组件传值:父子组件传值、非父子组件传值[通俗易懂]
- vue子组件向父组件传值的方法
- React组件基础
- react 子组件向父组件传值_vue父组件给子组件传值
- react子父组件互相通信传值
- react源码分析:深度理解React.Context_2023-02-28
- 【多角度】react中类组件与函数组件区别
- antd mobile 作者教你写 React 受控组件和非受控组件
- React组件之间的通信方式总结(上)
- React--3: 组件和模块及函数式组件
- React入门四:React组件的使用
- react使用antd中Form内联组件与Form表单默认赋值
- (四)处理组件进场和离场动画 <Transition />
- 【React】组件&事件
- Swift开发React Native组件详解手机开发
- Vue组件通讯详解编程语言
- 件Linux驱动程序及其附属组件(linux附属组)
- TrieTree服务-组件构成及其作用介绍