import React from 'react'; import { InputNumber, Select, Space, SpaceProps } from 'antd'; import type { InputNumberProps } from 'antd/es/input-number'; import type { SelectProps } from 'antd/es/select'; const { Option } = Select; export interface NumberUnitOption { label: React.ReactNode; value: string; } export interface NumberUnitValue { number?: number; unit?: string; } export type NumberWithUnitProps = SpaceProps & { value?: NumberUnitValue; onChange?: (next: NumberUnitValue) => void; numberClassName?: string; unitClassName?: string; className?: string; options: NumberUnitOption[]; defaultUnit?: string; defaultNumber?: number; numberProps?: Partial; selectProps?: Partial; }; const NumberWithUnit: React.FC = ({ value = {}, onChange, numberClassName, unitClassName, className, options, defaultUnit, defaultNumber, numberProps, selectProps, onBlur, ...rest // ← 这里会收到、style 等 }) => { const unit = value?.unit ?? defaultUnit ?? undefined; const triggerChange = (changed: Partial) => { onChange?.({ ...value, ...changed }); }; return ( <> triggerChange({ number: typeof n === 'number' ? n : undefined }) } {...numberProps} defaultValue={defaultNumber} onBlur={onBlur} /> ); }; export default NumberWithUnit;