Atomic Habits

[checkAll] ! ! list .length ? boolean ? 본문

IT/React

[checkAll] ! ! list .length ? boolean ?

체계성 2021. 11. 14. 09:59
import React from 'react'
import { Checkbox, Divider } from 'antd';

const CheckboxGroup = Checkbox.Group;

const plainOptions = ['Apple', 'Pear', 'Orange'];
const defaultCheckedList = ['Apple', 'Orange'];


export default function FormEx1() {
    const [checkedList, setCheckedList] = React.useState(defaultCheckedList);
    const [indeterminate, setIndeterminate] = React.useState(true);
    const [checkAll, setCheckAll] = React.useState(false);
  
    const onChange = list => {
      setCheckedList(list);
      
      ★ setIndeterminate(!!list.length && list.length < plainOptions.length);
      
      alert("list.length : "+list.length);        // 2
      alert("!list.length : "+!list.length);      // false  (2의 반대)
      alert("!!list.length : "+!!list.length);    // true   (2의 반대의 반대)
      
      setCheckAll(list.length === plainOptions.length);
    };
  
    const onCheckAllChange = e => {
      setCheckedList(e.target.checked ? plainOptions : []);
      setIndeterminate(false);
      setCheckAll(e.target.checked);
    };
    return (
        <>
        <Checkbox indeterminate={indeterminate} onChange={onCheckAllChange} checked={checkAll}>
          Check all
        </Checkbox>
        <Divider />
        <CheckboxGroup options={plainOptions} value={checkedList} onChange={onChange} />
      </>
    )
}

'IT > React' 카테고리의 다른 글

React. Part2. ch3. 10~12. Material UI 1,2,3  (0) 2021.11.14
[VS CODE] React Code Snippets  (0) 2021.11.14
React. Part2. ch2. 04. emotion 2  (0) 2021.11.12
React. Part2. ch2. 03. emotion 1  (0) 2021.11.12
React. Part2. ch2. 02-2. styled-components  (0) 2021.11.11
Comments