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设置为最新的状态。

目录
相关文章
|
2月前
|
前端开发 JavaScript 网络架构
react对antd中Select组件二次封装
本文介绍了如何在React中对Ant Design(antd)的Select组件进行二次封装,包括创建MSelect组件、定义默认属性、渲染Select组件,并展示了如何使用Less进行样式定义和如何在项目中使用封装后的Select组件。
89 2
react对antd中Select组件二次封装
|
2月前
|
前端开发
React给antd中TreeSelect组件左侧加自定义图标icon
本文介绍了如何在React中为Ant Design的TreeSelect组件的每个树节点添加自定义图标,并解决了因缺少key属性而导致的警告问题,展示了如何通过递归函数处理treeData数据并为每个节点添加图标。
103 2
React给antd中TreeSelect组件左侧加自定义图标icon
|
2月前
|
前端开发
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
本文介绍了在React项目中如何添加路径别名alias以简化模块引入路径,设置组件props的默认值,以及如何二次封装Ant Design的Modal组件。文章还提供了具体的代码示例,包括配置Webpack的alias、设置defaultProps以及封装Modal组件的步骤和方法。
66 1
React添加路径别名alias、接受props默认值、并二次封装antd中Modal组件与使用
|
22天前
|
前端开发 JavaScript API
2025年前端框架是该选vue还是react?有了大模型-例如通义灵码辅助编码,就不用纠结了!vue用的多选react,react用的多选vue
本文比较了Vue和React两大前端框架,从状态管理、数据流、依赖注入、组件管理等方面进行了详细对比。当前版本和下载量数据显示React更为流行,但Vue在国内用户量增长迅速。Vue 3通过组合式API提供了更灵活的状态管理和组件逻辑复用,适合中小型项目;React则更适合大型项目和复杂交互逻辑。文章还给出了选型建议,强调了多框架学习的重要性,认为技术问题已不再是选型的关键,熟悉各框架的最佳实践更为重要。
|
2月前
|
前端开发 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)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
45 2
|
2月前
|
前端开发 数据安全/隐私保护
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
文章介绍了如何在React项目中使用Ant Design实现一个修改密码的组件,包括原密码、新密码和再次输入新密码的表单项,并为新密码增加了正则表达式复杂度校验。
67 0
react antd 实现修改密码(原密码,新密码,再次输入新密码,新密码增加正则复杂度校验)
|
2月前
|
前端开发 计算机视觉
React使用antd实现可编辑单元格
React结合Ant Design实现可编辑单元格的表格组件,通过EditableRow和EditableCell封装实现单元格编辑功能,并提供saveFun回调保存编辑内容。
89 1
|
2月前
|
前端开发
React按需加载antd步骤以及出现的问题
在使用`babel-plugin-import`插件时,可以在项目的根目录创建`.babelrc`文件或在`package.json`中添加babel配置。这两个文件中不应该存在重复的配置。如果出现"Multiple configuration files found"错误,需要选择其中一个文件进行配置,并删除另一个文件中的babel配置。使用该插件后,可以直接从`antd`引入组件,无需手动引入样式文件。
61 1
|
2月前
|
前端开发
React 中购物车功能实现(全选多选功能实现)
React 中购物车功能实现(全选多选功能实现)
36 2
|
8天前
|
前端开发 JavaScript 开发者
颠覆传统:React框架如何引领前端开发的革命性变革
【10月更文挑战第32天】本文以问答形式探讨了React框架的特性和应用。React是一款由Facebook推出的JavaScript库,以其虚拟DOM机制和组件化设计,成为构建高性能单页面应用的理想选择。文章介绍了如何开始一个React项目、组件化思想的体现、性能优化方法、表单处理及路由实现等内容,帮助开发者更好地理解和使用React。
33 9