# SliderInput 组件 组合了 Slider 和 InputNumber 的组件,支持拖拽和输入两种方式设置数值。 ## 功能特性 - 同时支持滑块拖拽和数字输入 - 自动同步两个控件的值 - 支持最小值、最大值、步长设置 - 支持自定义标记点 - 支持禁用状态 - 响应式布局 ## 使用方法 ### 基础用法 ```tsx import SliderInput from '@/components/SliderInput'; function MyComponent() { const [blockSize, setBlockSize] = useState(500); return ( ); } ``` ### 带标签 ```tsx ``` ### 带标记点 ```tsx ``` ### 自定义标记点样式 ```tsx ``` ### 带提示信息 ```tsx `${value} 字符`, }} /> ``` ### 在表单中使用 ```tsx import { Form } from 'antd'; import SliderInput from '@/components/SliderInput'; function FormExample() { const [form] = Form.useForm(); return (
); } ``` ### 在 CreateDataset 中使用 ```tsx import SliderInput from '@/components/SliderInput'; const CreateDataset = () => { const [blockSize, setBlockSize] = useState(500); const [overlap, setOverlap] = useState(50); return (
); } ``` ## Props | 属性 | 类型 | 默认值 | 说明 | |------|------|--------|------| | value | number | - | 当前值(受控) | | onChange | (value: number \| null) => void | - | 值变化时的回调函数 | | min | number | 0 | 最小值 | | max | number | 100 | 最大值 | | step | number | 1 | 步长 | | defaultValue | number | 0 | 默认值(非受控) | | disabled | boolean | false | 是否禁用 | | label | string | - | 标签文本 | | className | string | '' | 容器自定义样式类名 | | sliderClassName | string | '' | Slider 自定义样式类名 | | inputClassName | string | '' | InputNumber 自定义样式类名 | | marks | Record | - | 刻度标记 | | tooltip | object | - | 提示信息配置 | ### tooltip 配置 | 属性 | 类型 | 说明 | |------|------|------| | open | boolean | 是否始终显示提示 | | placement | 'top' \| 'left' \| 'right' \| 'bottom' | 提示位置 | | formatter | (value?: number) => ReactNode | 格式化提示内容 | ## 注意事项 1. **值的范围**:输入的值会自动限制在 min 和 max 之间 2. **步长**:拖拽和输入都会遵循 step 设置 3. **受控组件**:建议使用受控模式(传入 value 和 onChange) 4. **布局**:Slider 占据剩余空间,InputNumber 固定宽度 120px ## 样式定制 ### 自定义宽度 ```tsx ``` ### 自定义 InputNumber 宽度 ```tsx ``` ## 常见场景 ### 场景1:文档分块大小设置 ```tsx `${value} 字符`, }} /> ``` ### 场景2:重叠大小设置 ```tsx `${value} 字符 (${((value / chunkSize) * 100).toFixed(0)}%)`, }} /> ``` ### 场景3:温度参数设置 ```tsx ```