ant-design/components/checkbox/demo/check-all.md
Tom Xu f5ed19248f
docs(checkbox): change check all demo to hook (#27608)
* docs(checkbox): change check all demo to hook

* Update check-all.md

* Update demo.test.js.snap
2020-11-06 17:09:21 +08:00

1.3 KiB

order title
4
zh-CN en-US
全选 Check all

zh-CN

在实现全选效果时,你可能会用到 indeterminate 属性。

en-US

The indeterminate property can help you to achieve a 'check all' effect.

import { Checkbox, Divider } from 'antd';

const CheckboxGroup = Checkbox.Group;

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

const App = () => {
  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);
    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} />
    </>
  );
};

ReactDOM.render(<App />, mountNode);