import React, { ChangeEvent, useContext, HTMLAttributes } from 'react' import classNames from 'classnames' import { CheckboxGroupContext } from './util' interface CheckboxProps extends Omit, 'onChange'> { value?: V checked?: boolean onChange?: (event: ChangeEvent) => void disabled?: boolean indeterminate?: boolean name?: string } function Checkbox({ value, checked, onChange, children, name, disabled, indeterminate, className, style, ...rest }: CheckboxProps) { const checkBoxGroupContext = useContext(CheckboxGroupContext) const handleChange = (event: ChangeEvent) => { onChange && onChange(event) // 代表在 CheckBoxGroup 下 if (checkBoxGroupContext.isInCheckboxGroup) { checkBoxGroupContext.onChange(value!) } } let oName = name let oChecked = checked if (checkBoxGroupContext.isInCheckboxGroup) { oName = checkBoxGroupContext.name oChecked = checkBoxGroupContext.value?.includes(value!) if (checked !== undefined || name !== undefined || onChange !== undefined) { console.warn('在 CheckBoxGroup 下,不能提供 checked name onChange') } } return ( ) } export default Checkbox export type { CheckboxProps }