当前位置: 首页 > news >正文

React + Antd 自定义Select选择框 全选、清空功能

实现代码

import React, { useState, useEffect } from 'react';
import { Select, Space, Divider, Button } from 'antd';export default function AllSelect (props) {const {fieldNames, // 自定义节点labbel、value、options、grouLabeloptions, // 数据化配置选项内容,{label,value}[]value, // 指定当前选中的条目,多选时为一个数组onChange, // 选中option或input的value变化时...restProps} = props;// console.log('AllSelect', mode);const [selectValue, setSelectValue] = useState([]);const [isShowAll, setIsShowAll] = useState(false);const selectAll = () => {let values = options.map(option => {return fieldNames.value? option[fieldNames.value]: option.value || option;});setSelectValue(values);onChange(values);};const clearAll = () => {setSelectValue([]);onChange([]);};// 选中option或input的value变化时const handleChange = (values, option) => {console.log('handleChange', values);setSelectValue(values);onChange(values);};// 页面加载完成时调用useEffect(() => {if (props.mode) {setIsShowAll(true);} else {setIsShowAll(false);}}, []);return (<Selectplaceholder='请选择'fieldNames={fieldNames}value={selectValue}options={options}onChange={handleChange}dropdownRender={menu => (<>{menu}{isShowAll ? (<><Divider style={{ margin: '8px 0' }} /><Space><Button type='link' onClick={selectAll}>全选</Button><Button type='link' onClick={clearAll}>清空</Button></Space></>) : ('')}</>)}{...restProps}></Select>);
}

使用

import { useState } from "react";export default function SelectDemo() {const { optionList, setOptionList } = useState([{id: 1,name: "律师",},{id: 2,name: "教师",},{id: 3,name: "厨师",},{id: 4,name: "会计",},]);return (<AllSelectstyle={{ width: 300 }}options={optionList}mode="multiple"defaultValue={[]}maxTagCount="responsive"fieldNames={{ label: "name", value: "id" }}></AllSelect>);
}

参考:
https://blog.csdn.net/likepoems/article/details/128549643
https://www.cnblogs.com/likepoems/p/17025233.html
https://blog.csdn.net/qq_41620887/article/details/129985339

http://www.lryc.cn/news/229806.html

相关文章:

  • 阿里云国际站:应用实时监控服务
  • 专题知识点-二叉树-(非常有意义的一篇文章)
  • 多路数据写入DDR3/DDR4的两种方法
  • 3 分钟看完 NVIDIA GPU 架构及演进
  • SMART PLC 和S7-1200PLC MODBUSTCP通信速度测试
  • C++文件操作知识点总结
  • 开发vue3 UI组件库,并且发布到NPM
  • 雷达测角原理、测角精度、测角分辨率以及3DFFT角度估计算法汇总
  • 金财数科无代码开发平台:轻松实现电商、CRM、广告推广系统的集成连接
  • JavaWeb篇_09——Tomcat运行过程以及Servlet继承结构
  • Python中的异常与错误处理
  • sqli-labs关卡16(基于post提交的双引号加括号闭合的布尔盲注)通关思路
  • 2.5k的ChatGPT-Java版SDK升级1.1.2-beta0支持GPT-4V、Dall-e-3模型、ToolCalls、微调Job、TTS...
  • k8s二进制(ETCD的部署安装)
  • 【rl-agents代码学习】02——DQN算法
  • 关于使用 Java 反射技术来实现解耦?
  • 使用清华智谱ChatGLM2大模型搭建本地私有知识库
  • MES系统如何赋能制造企业实现4M防错追溯?
  • Mybatis保存时参数携带了逗号和空格导致SQL保存异常
  • vscode launch.json
  • 绿盟远程安全评估系统 RSAS 使用体验-难用
  • 【Linux】 mdir命令使用
  • 解压游戏资源,导出游戏模型
  • 【科研新手指南2】「NLP+网安」相关顶级会议期刊 投稿注意事项+会议等级+DDL+提交格式
  • 220kV环形网络的动态无功补偿方案初步设计
  • 关于值传递和引用传递的问题记录
  • 律师咨询小程序搭建流程
  • 怎么在uni-app中使用Vuex 深度解刨
  • 兼容iphone(ios)圆角(border-radius)不起作用的问题
  • 车间部署MES管理系统后有哪些变化