跳到主要内容

Select 选择器

下拉选择器,支持受控 / 非受控、键盘导航、清空。

基础用法​

受控选择

当前值:(未选择)

import { useState } from 'react'
import { LhSelect } from '@lh-ui/react'
import type { LhSelectOption } from '@lh-ui/react'

const options: LhSelectOption[] = [
{ label: '水墨', value: 'ink' },
{ label: '丹青', value: 'danqing' },
{ label: '留白', value: 'blank' },
{ label: '工笔', value: 'gongbi' },
]

export default function Demo() {
const [value, setValue] = useState<string>('')

return (
<LhSelect
value={value}
options={options}
placeholder="请选择画风"
onChange={(val) => setValue(val as string)}
/>
)
}

Select Props​

属性说明类型可选值默认值
value受控值unknown——
defaultValue非受控默认值unknown——
options选项列表LhSelectOption[]—[]
placeholder占位符string—语言包兜底
disabled禁用boolean—false
clearable可清空boolean—false
size尺寸'large' | 'middle' | 'small'—跟随 ConfigProvider
name原生 name 属性string——
ariaLabel无障碍标签string——
placement下拉位置LhPlacement—'bottom-start'
themeVars组件级主题变量Record<string, string>——
sx快速布局属性SxProps——

LhSelectOption​

属性说明类型
label选项展示文案string
value选项值unknown
disabled禁用该选项boolean

Select 事件​

事件说明回调签名Vue 对照
onChange选中时触发(双参数:值与选项对象)(value: unknown, option: LhSelectOption | undefined) => void@change
onClear清空时触发() => void@clear

键盘交互​

展开后:ArrowUp / ArrowDown 高亮选项(跳过禁用项),Enter 选中,Escape 收起。触发器为 role="combobox",面板为 role="listbox",选项为 role="option",并用 aria-activedescendant 同步高亮。

ref​

forwardRef<HTMLDivElement> —— 触发器根元素。LhSelectInstance 暴露 open() / close() / focus()。

样式​

import '@lh-ui/react/style/select'