设计
设计指南
设计原则
样式指南
设计资源
Klein - Figma
Klein Font
官方图标库
开发
开发文档
React
Vue Web
敬请期待
开发资源
GitHub 代码仓库
生态产品
生态产品
Orion Fonts
敬请期待
Orio Market
敬请期待
Klein Pro
敬请期待
Klein Editor
敬请期待

选择器 Select

从多个选项中选择一个或多个选项,并呈现选择结果,用于表单数据填写和属性选择、超过 5 个选项才使用(低于 5 个建议使用「单选」,提升用户选择效率)。

  • 针对国家、金额、年龄这类较多的选项时,支持手输「自动完成」功能。

基本使用

基本使用。

带搜索框

展开后可对选项进行搜索。

搜索远程数据

搜索和远程数据结合。

下拉加载远程数据

下拉加载远程数据。

三种大小

三种大小的选择框,当 size 分别为 large 和 small 时,输入框高度为 40px 和 24px ,默认高度为 32px。

多选

多选,从已有条目中选择。

多选带按钮

多选并包含功能按钮。

响应式 maxTagCount

多选下通过响应式布局让选项自动收缩该功能对性能有所消耗,不推荐在大表单场景下使用。

扩展菜单

使用 dropdownRender 对下拉菜单进行自由扩展。

扩展菜单删除

使用 dropdownRender 对下拉菜单允许删除。

前、后缀

自定义的选择框前、后缀图标。

自定义选择标签

允许自定义选择标签的样式。

组合模式

允许不同组件组合。

预设长度

允许预设5种长度的select。

Select Props

参数说明类型默认值
removeIcon自定义的多选框清除图标ReactNode-
wSize内置5种select宽度(分别对应96,200,304,408,512)"xs"-
size按钮大小"large"-
loading加载状态控制booleanfalse
showArrow是否显示下拉小箭头boolean-
showSearch使单选模式可搜索boolean-
filterSort搜索时对筛选结果项的排序函数, 类似Array.sort里的 compareFunction((optionA: any, optionB: any) => number)-
menuItemSelectedIcon自定义多选时当前选中的条目图标ReactNode-
listHeight设置弹窗滚动高度number-
dropdownClassName下拉菜单的 className 属性string-
suffixIcon自定义的选择框后缀图标ReactNode-
maxTagCount最多显示多少个 tag,响应式模式会对性能产生损耗number-
maxTagTextLength最大显示的 tag 文本长度number-
dropdownStyle下拉菜单的 style 属性CSSProperties-
dropdownRender自定义下拉框内容((menu: ReactNode) => ReactNode)-
mode设置 Select 的模式为多选或标签"multiple"-
tagRender自定义 tag 内容 render((props: TagRenderProps, originNode: ReactNode) => ReactElement<any, string-
virtual设置 false 时关闭虚拟滚动booleantrue
tokenSeparators在 tags 和 multiple 模式下自动分词的分隔符string[]-
value指定当前选中的条目string-
defaultValue指定默认选中的条目string-
bordered是否有边框booleantrue
dropdownMatchSelectWidth下拉菜单和选择器同宽默认将设置 min-width,当值小于选择框宽度时会被忽略false 时会关闭虚拟滚动numbertrue
onClear清除内容时回调(() => void)-
onDeselect取消选中时调用,参数为选中项的 value (或 key) 值,仅在 multiple 或 tags 模式下生效((value: string-
onInputKeyDown按键按下时回调((value?: any) => void)-
onMouseEnter鼠标移入时回调((value?: any) => void)-
onMouseLeave鼠标移出时回调((value?: any) => void)-
onPopupScroll下拉列表滚动时的回调((e: UIEvent<HTMLDivElement, UIEvent>, currentNode: HTMLDivElement, currentIndex: number) => void)-
removeOption下拉选项可删除((value?: any) => void)-
optionLabelProp回填到选择框的 Option 的属性值,默认是 Option 的子元素ReactNode-
open是否展开下拉菜单boolean-
labelInValue是否把每个选项的 label 包装到 value 中,会把 Select 的 value 类型从 string 变为 { value: string, label: ReactNode } 的格式boolean-
scrollInfinite下拉加载(() => void)-
infiniteHasMore是否还有更多下拉内容booleantrue
itemindex添加 options 时默认选中的option项number-
allowClear支持清除booleanfalse
autoFocus默认获取焦点boolean-
defaultOpen是否默认展开下拉菜单boolean-
disabled禁用状态控制boolean-
filterOption是否根据输入项进行筛选当其为一个函数时,会接收 inputValue option 两个参数,当 option 符合筛选条件时,应返回 true,反之则返回 falsebooleantrue
options数据化配置选项内容,相比 jsx 定义会获得更好的渲染性能{ label?: string-
getPopupContainer提示信息挂载点,默认挂载到 body 上((node?: any) => HTMLElement)-
notFoundContent当下拉列表为空时显示的内容ReactNode-
placeholderplaceholderstring-
className自定义classNamestring-
style自定义styleCSSProperties-
onBlur失去焦点时回调((value?: any) => void)-
onFocus获得焦点时回调((value?: any) => void)-
onChange选中 option,或 input 的 value 变化时,调用此函数((value: any, option?: any) => void)-
onDropdownVisibleChange展开下拉菜单的回调((open: boolean) => void)-
onSearch文本框值变化时回调((value: string) => void)-
onSelect被选中时调用,参数为选中项的 value (或 key) 值((value?: any, option?: any) => void)-

Option Props

参数说明类型默认值
disabled是否禁用boolean-
value默认根据此属性值进行筛选`numberstring`
classNameOption 器类名string-
title选项上的原生 title 提示string-
removeable选项是否可删除boolean-

贡献者