Skip to content

Select 选择器 ​

显示一个可供选择的选项列表。列表至少与触发器等宽,过长时可滚动,在紧凑触屏上变为底部面板。

基础用法 ​

网页近似预览,真机效果以 HarmonyOS 渲染为准。

长列表 ​

数据形式是虚拟化的:只存在可见的行,滚出视野的行会被复用,列表会在所选选项处打开。每第 97 项被禁用。

网页近似预览,真机效果以 HarmonyOS 渲染为准。

MANY_OPTIONS.length 个选项 · item = …

API ​

从组件库源码中的 @Param / @Event / @BuilderParam 声明自动提取。

SSelect ​

shadcn-vue 的 Select。两种使用方式:

指针 / 宽屏上为锚定列表,紧凑的触控屏上为底部面板。

数据形式会使用 List + Repeat.virtualScroll()(ADR D14)渲染选项:只存在可见的行,列表打开时会滚动到所选选项。组合形式会构建每个条目(插槽内容无法虚拟化)——凡是超过一屏的内容请使用 options。

面板令牌(ADR D13/D14):--select-*(background、border-color、radius、border-width、padding、shadow、highlight-background、highlight-foreground、max-height),未设置时回退到共享的 --menu-* 表面;可通过 tokens 按实例设置。

属性类型默认值说明
value!!string | undefinedundefined
defaultValuestring''
placeholderResourceStr$r('app.string.spark_select_placeholder')
optionsSparkSelectOption[][]数据驱动模式:渲染自己的触发器 +(虚拟化的)内容
disabledbooleanfalse
adaptiveSparkAdaptive
SparkAdaptive = 'auto' | 'pointer' | 'touch'
'auto'
tokensSparkOptionPanelTokens{}数据模式:面板覆盖项(参见 SSelectContent)
事件类型默认值说明
onValueChange(v: string) => void() => { }

插槽: 子组件(尾随闭包)

SSelectTrigger ​

输入框样式的触发器,显示所选标签(或占位文字)以及一个箭头。

属性类型默认值说明
placeholderResourceStr$r('app.string.spark_select_placeholder')
sizing'default' | 'sm''default''default' 为 h-9,'sm' 为 h-8

SSelectContent ​

选项列表:至少与触发器等宽,锚定在其下方;紧凑的触控屏上为底部面板。使用 options(即 SSelect({ options }) 所传入的)时,各行是虚拟化的;否则渲染插槽。

tokens / --select-* → --menu-* → bg-popover rounded-md border p-1 shadow-md。

属性类型默认值说明
adaptiveSparkAdaptive
SparkAdaptive = 'auto' | 'pointer' | 'touch'
'auto'
maxListHeightnumber320内容开始滚动前列表的最大高度,单位 vp;--select-max-height / tokens.maxHeight 可覆盖它
optionsSparkSelectOption[][]数据模式:使用虚拟化的行替代插槽
tokensSparkOptionPanelTokens{}

插槽: 子组件(尾随闭包)

SSelectItem ​

组合形式中的一个选项(与数据形式的行相同:右侧对勾,按下时透明度渐变)。

属性类型默认值说明
valuestring''
textstring''
disabledbooleanfalse

SSelectLabel ​

属性类型默认值说明
textResourceStr''

SSelectSeparator ​

无属性。

SSelectGroup ​

插槽: 子组件(尾随闭包)

MIT Licensed