• antd Checkbox 如何套多层


    目录: 1、 注意事项   2、效果图 3、代码

    -------------------------------

    注意事项:

    关系: 

    onChange={onCheckAllChange} > 

      

     

     ×2

     

     

    1、   是如何控制   

    答:通过 onChange={onCheckAllChange} 属性监听点击,回调函数,然后设置

      value属性 。 

    2、子  被点满后,最外层如何变为亮 

    答: 通过 onchang属性监听子 是否被点满吗,如果点满,就设置最外层的   的 checked 为true

    3、被包裹的,它的checked属性会失效。

    4、具体看下代码,最重要是搞清楚 CheckboxGroup 是如何控制它的子 值的? 同时,最外层 是如何控制 的?

    --------------------------

    效果图:

     

     

     

    --------------------------

    1. import React, { useState } from "react";
    2. import { Checkbox, Divider } from "antd";
    3. const CheckboxGroup = Checkbox.Group;
    4. const plainOptions = ["Apple", "Pear", "Orange"];
    5. const defaultCheckedList = ["Apple", "Orange"];
    6. const App = () => {
    7. const [checkedList, setCheckedList] = useState([]);
    8. const [checkedList1, setCheckedList1] = useState([]);
    9. const [indeterminate, setIndeterminate] = useState(true);
    10. const [checkAll, setCheckAll] = useState(false);
    11. const [checkAll1, setCheckAll1] = useState(false);
    12. const onChange = (list) => {
    13. setCheckedList(list);
    14. setIndeterminate(!!list.length && list.length < plainOptions.length);
    15. setCheckAll(list.length === plainOptions.length);
    16. };
    17. const onChange1 = (list) => {
    18. setCheckedList1(list);
    19. // setCheckAll1(list.length === 2);
    20. if (list.length === 2) {
    21. setCheckedList(Object.assign(checkedList, ["Apple"]));
    22. } else {
    23. let removedArr = checkedList.filter((x) => x !== "Apple");
    24. setCheckedList(removedArr);
    25. }
    26. };
    27. const aaa = (e) => {
    28. console.log(e, "9999999999999");
    29. setCheckedList1(e.target.checked ? ["ee", "ff"] : []);
    30. };
    31. const onCheckAllChange = (e) => {
    32. setCheckedList(e.target.checked ? plainOptions : []);
    33. setIndeterminate(false);
    34. setCheckAll(e.target.checked);
    35. setCheckedList1(e.target.checked ? ["ee", "ff"] : []);
    36. };
    37. return (
    38. <>
    39. <Checkbox
    40. indeterminate={indeterminate}
    41. onChange={onCheckAllChange}
    42. checked={checkAll}
    43. >
    44. 最外层全选
    45. Checkbox>
    46. <Divider />
    47. <CheckboxGroup
    48. // options={plainOptions}
    49. value={checkedList}
    50. onChange={onChange}
    51. >
    52. <Checkbox value="Apple" onChange={aaa}>
    53. aa选项全选
    54. Checkbox>
    55. <CheckboxGroup
    56. style={{ display: "inline", margin: "5" }}
    57. value={checkedList1}
    58. onChange={onChange1}
    59. >
    60. <Checkbox value="ee">我是被aa包裹的eeCheckbox>
    61. <Checkbox value="ff">我是被aa包裹的ffCheckbox>
    62. CheckboxGroup>
    63. <Checkbox value="Pear" style={{ display: "block" }}>
    64. bb
    65. Checkbox>
    66. <Checkbox value="Orange">ccCheckbox>
    67. CheckboxGroup>
    68. );
    69. };
    70. export default App;

  • 相关阅读:
    尚硅谷(SpringCloudAlibaba微服务分布式)学习代码Eureka部分
    戒慎乎不睹,大模型体验记
    java基本数据类型
    SystemVerilog-决策语句-case语句
    SpringBoot——整合Mongodb
    Apache HBase
    powerdesigner导出表数据库设计文档excel
    R-GIS: 如何用R语言实现GIS地理空间分析及模型预测
    HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)
    Mybatis缓存机制
  • 原文地址:https://blog.csdn.net/weixin_43416349/article/details/127716647