import React, { useRef, useState } from 'react'; import { GroupWrap } from './style'; import Checkbox from './'; import { ICheckboxGroup } from './types'; const Group = function({ options = [], onChange, values = [], defaultValues = [], ...rest }: ICheckboxGroup) { const [checked, setCheck] = useState(defaultValues); const defaultSetted = useRef(false); if (checked.join() !== values.join() && !defaultSetted.current) { setCheck(values); } if (defaultValues.length && !defaultSetted.current) { defaultSetted.current = true; setCheck([...defaultValues]); } return ( {options.map((o, index) => ( { if (isChecked && !checked.includes(o.value)) { checked.push(o.value); } else if (!isChecked && checked.includes(o.value)) { checked.splice(checked.findIndex((i: any) => i === o.value), 1); } onChange && onChange([...checked].sort()); }} > {o.label} ))} ); }; export default Group;