Skip to content

MobileSelect

MobileSelect 是移动端单选抽屉。它复用 SelectOption / SelectOptionGroup 数据结构,点击触发器后从底部打开抽屉,用户选择候选项后点击“确定”提交。

Basic

最小用法只需要传入 optionsvaluedefaultValue 使用单个字符串,和桌面 Select 保持一致。

常见场景

选项水平对齐

align 控制抽屉内选项内容的水平对齐方式,支持 leftcenterright

分组选项

移动端选项同样支持 SelectOptionGroup。分组标题会渲染为弱化文本,separator 会在分组之间增加分割线。

Usage

tsx
import { MobileSelect } from "@ldkj/web-ui";

const options = [
  { label: "标准洗车", value: "wash" },
  { label: "精致美容", value: "beauty" },
  { label: "轮胎养护", value: "tire" },
];

export function Example() {
  return (
    <MobileSelect
      options={options}
      defaultValue="beauty"
      title="选择服务"
      placeholder="请选择服务项目"
      clearable
    />
  );
}

API

MobileSelect

属性说明类型默认值
options选项或分组选项列表(SelectOption | SelectOptionGroup)[][]
value受控值string-
defaultValue非受控默认值string""
onValueChange确认或清空后的回调(value, meta) => void-
open受控抽屉打开状态boolean-
defaultOpen非受控默认打开状态booleanfalse
onOpenChange打开状态变化回调(open: boolean) => void-
placeholder未选择时的触发器文案React.ReactNode请选择
title抽屉标题React.ReactNode请选择
cancelText取消按钮文案React.ReactNode取消
confirmText确认按钮文案React.ReactNode确定
clearable是否显示清空按钮booleanfalse
align选项内容水平对齐"left" | "center" | "right"left
displayRender自定义触发器显示内容(option) => React.ReactNode-
renderOption自定义选项内容(option, state) => React.ReactNode-
name表单字段名string-
required是否必填boolean-
disabled是否禁用booleanfalse
readOnly是否只读booleanfalse
className / class触发器类名string-
style触发器原生样式React.CSSProperties-
sx触发器 sx 样式SxProps-
drawerClassName / drawerClass抽屉类名string-
drawerStyle抽屉原生样式React.CSSProperties-
drawerSx抽屉 sx 样式SxProps-
maxDrawerHeight抽屉最大高度number | string76vh
optionClassName / optionClass选项类名string-
optionStyle选项原生样式React.CSSProperties-
optionSx选项 sx 样式SxProps-

MobileSelectValueChangeMeta

属性说明类型
reason变更原因"select" | "clear"
option当前确认的选项SelectOption | undefined
event清空时的原始事件React.SyntheticEvent | undefined

行为规则 / 优先级

  • 用户点击选项时只更新抽屉内的临时值,点击“确定”后才触发 onValueChange
  • 点击“取消”或遮罩会关闭抽屉,并丢弃本次未确认的临时选择。
  • displayRender 优先于默认的 option.label 触发器显示。
  • disabled 会禁用触发器;readOnly 允许查看当前值,但不会提交或清空新值。

Notes

  • MobileSelect 适合移动端页面、H5 内嵌页和窄屏表单;桌面优先场景仍建议使用 Select
  • align 只影响抽屉内选项内容,不影响触发器文案和抽屉本身的位置。
  • 表单提交时,name 对应的隐藏字段值是当前选中字符串。