react使用antd中的Checkbox实现多选

简介: 在React项目中,通过Ant Design的Checkbox组件实现多选。引入Checkbox,使用Checkbox.Group来管理Checkbox,设置`value`属性绑定选中项数组,通过`onChange`更新数组。维护一个全选状态,根据选中项数量与总数决定全选按钮状态。全选按钮的`onChange`事件用于控制所有Checkbox的选中状态。

效果图:
在这里插入图片描述

首先引入antd中的Checkbox

import {
    Checkbox } from 'antd';
const CheckboxGroup = Checkbox.Group;

在页面上使用:

  <CheckboxGroup 
          style={
   {
    display: "flex", flexWrap: "wrap" }} 
         value={
   selectList} 
          onChange={
   this.onChangeCheck} >
           {
   dataInfoList.map(function (item) {
   
                 return (
                          <Checkbox 
                            key={
   item.hostId}
                            value={
   item.hostId}>
                                 {
   item.hostName} 
                          </Checkbox>
                   )
               })}
  </CheckboxGroup>

通过接口获取数据:

 GroupListInfo(flag).then(res => {
   
            if (res.code !== 200) {
   
                message.warning(res.message)
                return false;
            }
            let {
    data } = res.data
            let dataList = []
            for (let i = 0; i < data.length; i++) {
   
                dataList = [...dataList, data[i].hostId]
            }
            let selectList = data.map(i => {
   
                if (i.selected === true) {
   
                    return i.hostId
                }
            }).filter(i => i !== undefined)
            this.setState({
   
                selectList,
                dataList: dataList,
                dataInfoList: data,
                checkAll: selectList.length === data.length ? true : false
            })
        })

selectList:所有选中的id,放到一个数组里面,用于返显数据;
dataList:所有的id,就是所有项的id,都放到了这个数组里面;
dataInfoList:接口返回的所有数组数据;
checkAll:boolean 全选按钮的选中与否;

onChangeCheck为每一个checkbox的change事件:

    onChangeCheck = selectList => {
   
        this.setState({
   
            selectList,
            checkAll: selectList.length === this.state.dataInfoList.length,
        });
    };

每次点击都能返回一个形参,这个形参就是当前这个checkgroup的所有选中项;
并判断如果当前选中项的个数等于总数据的个数,那么当前全选按钮应该为true,选中状态;

全选BTN:

    <Checkbox 
        onChange={
   this.onCheckAllChange} 
        checked={
   checkAll} >
            (全选)
    /Checkbox>

onCheckAllChange事件为点击全选按钮触发的事件:

 // 全选
    onCheckAllChange = _ => {
      
        this.setState({
   
            selectList: e.target.checked ? this.state.dataList: [],
            checkAll: e.target.checked
        })
    };

判断checked 选中状态,对selectList重新赋值。checkAll设置为最新的状态。

目录
相关文章
|
3月前
|
数据采集 前端开发 API
React - 实现一个基于 Antd 的数值范围组件
这篇文章介绍了如何实现一个基于Ant Design的数值范围组件,以满足数据采集流程中表单数据的录入需求。文章详细说明了组件的设计思路、代码结构、使用方式以及参数说明,并提供了效果预览和注意事项。组件支持只能输入数字,具有自定义表单控件封装的特点,同时支持所有InputNumber属性,以适应不同业务场景的需求。
112 0
React - 实现一个基于 Antd 的数值范围组件
|
2月前
|
编解码 前端开发 JavaScript
js react antd 实现页面低分变率和高分变率下字体大小自适用,主要是配置antd
在React中结合Ant Design与媒体查询,通过less变量和响应式断点动态调整`@font-size-base`,实现多分辨率下字体自适应,提升跨设备体验。
123 2
|
3月前
|
前端开发 安全 数据安全/隐私保护
React - 实现一个基于 Antd 的密码强度校验组件
这篇文章介绍了一个基于 Nest 和 Umi 技术栈的个人项目开发中用到的密码强度校验组件的开发过程。作者首先在网上找不到满意的资料,于是决定自己开发该组件。文章依次介绍了效果预览、组件思想和组件开发的过程,并提供了相应的代码示例。最后,作者展示了实际效果,并提供了仓库地址供参考。
107 0
React - 实现一个基于 Antd 的密码强度校验组件
|
11月前
|
存储 前端开发 UED
React 中的多选按钮(Checkbox)
本文详细介绍了在 React 中实现多选按钮(Checkbox)的方法,包括基础用法、常见问题及解决策略、进阶技巧如使用受控组件和第三方库,旨在帮助开发者更好地理解和应用多选按钮组件。
598 19
|
前端开发 JavaScript API
2025年前端框架是该选vue还是react?有了大模型-例如通义灵码辅助编码,就不用纠结了!vue用的多选react,react用的多选vue
本文比较了Vue和React两大前端框架,从状态管理、数据流、依赖注入、组件管理等方面进行了详细对比。当前版本和下载量数据显示React更为流行,但Vue在国内用户量增长迅速。Vue 3通过组合式API提供了更灵活的状态管理和组件逻辑复用,适合中小型项目;React则更适合大型项目和复杂交互逻辑。文章还给出了选型建议,强调了多框架学习的重要性,认为技术问题已不再是选型的关键,熟悉各框架的最佳实践更为重要。
7812 1
|
前端开发 JavaScript 区块链
react18函数组件+antd使用指南-使用代码集合以及报错记录汇总
本文介绍了多个React开发中常见的问题及其解决方案,包括但不限于:1)`useForm`实例未连接到任何`Form`元素的警告及解决方法;2)监听页面滚动事件的实现方式;3)React 18与antd 5.8.6中定制主题的方法;4)React结合antd 4.x版本自定义主题色的步骤;5)解决`ResizeObserver loop`相关报错的技巧;6)处理React设计表单时遇到的CDN资源加载失败问题;7)解决onClick事件传参问题;8)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
358 3
|
前端开发 计算机视觉
React使用antd实现可编辑单元格
React结合Ant Design实现可编辑单元格的表格组件,通过EditableRow和EditableCell封装实现单元格编辑功能,并提供saveFun回调保存编辑内容。
575 1
|
前端开发
React按需加载antd步骤以及出现的问题
在使用`babel-plugin-import`插件时,可以在项目的根目录创建`.babelrc`文件或在`package.json`中添加babel配置。这两个文件中不应该存在重复的配置。如果出现"Multiple configuration files found"错误,需要选择其中一个文件进行配置,并删除另一个文件中的babel配置。使用该插件后,可以直接从`antd`引入组件,无需手动引入样式文件。
250 1
|
前端开发 数据安全/隐私保护
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
文章介绍了如何在React项目中使用Ant Design实现一个修改密码的组件,包括原密码、新密码和再次输入新密码的表单项,并为新密码增加了正则表达式复杂度校验。
338 0
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
|
1月前
|
缓存 前端开发 JavaScript
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
🌟蒋星熠Jaxonic,前端探索者。专注React Hooks深度实践,从原理到实战,分享状态管理、性能优化与自定义Hook精髓。助力开发者掌握函数组件的无限可能,共赴技术星辰大海!
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南