跳到主要內容

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'