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

react antd from表单全选按钮Button触发CheckBox状态回显

import React, { useState } from 'react';
import { Form, Button, Checkbox } from 'antd';const CheckboxGroup = Checkbox.Group;const App = () => {const [checkedList, setCheckedList] = useState([]);const [form] = Form.useForm();// 全选按钮的点击事件处理函数const handleSelectAll = () => {// 假设所有的checkbox值都在checkedList数组中const allCheckboxValues = ['A', 'B', 'C', 'D'];// 如果当前没有选中任何项,则全选;否则清空选中const willChecked = checkedList.length === 0 ? allCheckboxValues : [];setCheckedList(willChecked);form.setFieldsValue({'checkbox-group': willChecked})};// 渲染Checkbox组件const renderCheckboxes = () => {const options = [{ label: 'Option A', value: 'A' },{ label: 'Option B', value: 'B' },{ label: 'Option C', value: 'C' },{ label: 'Option D', value: 'D' }];return options.map(({ label, value }) => (<Checkbox key={value} value={value}>{label}</Checkbox>));};return (<Form form={form}><Form.Item name="checkbox-group" label="Checkbox Group"><CheckboxGroup value={checkedList} onChange={setCheckedList}>{renderCheckboxes()}<Button onClick={handleSelectAll}>全选</Button></CheckboxGroup></Form.Item></Form>);
};export default App;

        上述代码使用React和Ant Design实现了一个表单,其中包含了一个CheckboxGroup和一个“全选”按钮。点击“全选”按钮时,会根据当前是否有选中的项来决定是全选还是清空选中。

        实际开发时Form.Item也是由数据遍历生成,遇到了以下问题:

        1. 如果将Button按钮改成Checkbox全选,CheckBox全选的onChange事件会冒泡影响CheckboxGroup的onChange事件,使用e.stopPropagation无法阻止事件冒泡。

        2. 如果将1中的CheckBox全选组件位置移动到CheckboxGroup外部Form.Item的内部,使用form.setFieldsValue无法正常回显。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • gin快速入门
  • Ps:高速缓存机制
  • 全面解读AI大模型:一文带你看懂发展脉络与未来走向!
  • 0成本学习Liunx系统【只需要一台笔记本电脑,无需购买云服务器】
  • 痛哭,原来我一直在用前公司的git账号提交自己的github仓库
  • 对局域网电脑远程唤醒
  • DRF——Filter条件搜索模块
  • 8月跳槽进字节跳动测试岗了,面试真简单...
  • 【注解】反序列化时匹配多个 JSON 属性名 @JsonAlias 详解
  • 修改了原神4.8版本升级数据表
  • 关于前端form提交后端返回文件流触发浏览器下载(并发控制)
  • 程序员常用的10种算法
  • Pandas DataFrame 数据转换处理和多条件查询
  • 【模板】连接外围数据库
  • Java高效写入大量数据到Excel文件——使用Apache POI的SXSSFWorkbook
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • Android框架之Volley
  • Angular6错误 Service: No provider for Renderer2
  • create-react-app做的留言板
  • docker python 配置
  • javascript数组去重/查找/插入/删除
  • JS基础之数据类型、对象、原型、原型链、继承
  • Leetcode 27 Remove Element
  • Making An Indicator With Pure CSS
  • Map集合、散列表、红黑树介绍
  • Redis中的lru算法实现
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vuex 学习笔记 01
  • windows下如何用phpstorm同步测试服务器
  • 简单实现一个textarea自适应高度
  • 简单易用的leetcode开发测试工具(npm)
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 力扣(LeetCode)22
  • 扑朔迷离的属性和特性【彻底弄清】
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • #pragma 指令
  • #QT(智能家居界面-界面切换)
  • (1)(1.11) SiK Radio v2(一)
  • (1)svelte 教程:hello world
  • (1)无线电失控保护(二)
  • (33)STM32——485实验笔记
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (十三)Flask之特殊装饰器详解
  • (一) storm的集群安装与配置
  • (一)、python程序--模拟电脑鼠走迷宫
  • (原創) 未来三学期想要修的课 (日記)
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)负载均衡,回话保持,cookie
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost