logoMogu Design

⌘ K
  • 设计
  • 研发
  • 组件
  • 组件总览
  • 通用
    • Button按钮
    • Icon图标
    • Typography排版
  • 布局
    • Divider分割线
    • Grid栅格
    • Layout布局
    • Space间距
  • 导航
    • Anchor锚点
    • Breadcrumb面包屑
    • Dropdown下拉菜单
    • Menu导航菜单
    • Pagination分页
    • Steps步骤条
  • 数据录入
    • AutoComplete自动完成
    • Cascader级联选择
    • Checkbox多选框
    • ColorPicker颜色选择器New
    • DatePicker日期选择框
    • Form表单
    • Input输入框
    • InputNumber数字输入框
    • Mentions提及
    • Radio单选框
    • Rate评分
    • Select选择器
    • Slider滑动输入条
    • Switch开关
    • TimePicker时间选择框
    • Transfer穿梭框
    • TreeSelect树选择
    • Upload上传
  • 数据展示
    • Avatar头像
    • Badge徽标数
    • Calendar日历
    • Card卡片
    • Carousel走马灯
    • Collapse折叠面板
    • Descriptions描述列表
    • Empty空状态
    • Image图片
    • List列表
    • Popover气泡卡片
    • QRCode二维码
    • Segmented分段控制器
    • Statistic统计数值
    • Table表格
    • Tabs标签页
    • Tag标签
    • Timeline时间轴
    • Tooltip文字提示
    • Tour漫游式引导
    • Tree树形控件
  • 反馈
    • Alert警告提示
    • Drawer抽屉
    • Message全局提示
    • Modal对话框
    • Notification通知提醒框
    • Popconfirm气泡确认框
    • Progress进度条
    • Result结果
    • Skeleton骨架屏
    • Spin加载中
  • 其他
    • Affix固钉
    • App包裹组件
    • ConfigProvider全局化配置
    • FloatButton悬浮按钮
    • Watermark水印
何时使用
代码演示
基本
受控组件
三种大小
禁用
选择时分
步长选项
附加内容
12 小时制
范围选择器
无边框
自定义状态
API
方法
RangePicker
RangeDisabledTime
FAQ

TimePicker时间选择框

Switch开关Transfer穿梭框

输入或选择时间的控件。

何时使用

当用户需要输入一个时间,可以点击标准输入框,弹出时间面板进行选择。

代码演示

基本

点击 TimePicker,然后可以在浮层中选择或者输入某一时间。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';
import type { Dayjs } from 'dayjs';
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';

dayjs.extend(customParseFormat);

const onChange = (time: Dayjs, timeString: string) => {
  console.log(time, timeString);
};

const App: React.FC = () => (
  <TimePicker onChange={onChange} defaultOpenValue={dayjs('00:00:00', 'HH:mm:ss')} />
);

export default App;
三种大小

三种大小的输入框,大的用在表单中,中的为默认。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { Space, TimePicker } from 'mogud';
import dayjs from 'dayjs';

const App: React.FC = () => (
  <Space wrap>
    <TimePicker defaultValue={dayjs('12:08:23', 'HH:mm:ss')} size="large" />
    <TimePicker defaultValue={dayjs('12:08:23', 'HH:mm:ss')} />
    <TimePicker defaultValue={dayjs('12:08:23', 'HH:mm:ss')} size="small" />
  </Space>
);

export default App;
选择时分

TimePicker 浮层中的列会随着 format 变化,当略去 format 中的某部分时,浮层中对应的列也会消失。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';
import dayjs from 'dayjs';

const format = 'HH:mm';

const App: React.FC = () => <TimePicker defaultValue={dayjs('12:08', format)} format={format} />;

export default App;
附加内容

在 TimePicker 选择框底部显示自定义的内容。

expand codeexpand code
TypeScript
JavaScript
import React, { useState } from 'react';
import { Button, TimePicker } from 'mogud';

const App: React.FC = () => {
  const [open, setOpen] = useState(false);

  return (
    <TimePicker
      open={open}
      onOpenChange={setOpen}
      renderExtraFooter={() => (
        <Button size="small" type="primary" onClick={() => setOpen(false)}>
          OK
        </Button>
      )}
    />
  );
};

export default App;
范围选择器

通过 TimePicker.RangePicker 使用时间范围选择器。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';

const App: React.FC = () => <TimePicker.RangePicker />;

export default App;
自定义状态

使用 status 为 TimePicker 添加状态,可选 error 或者 warning。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { Space, TimePicker } from 'mogud';

const App: React.FC = () => (
  <Space direction="vertical">
    <TimePicker status="error" />
    <TimePicker status="warning" />
    <TimePicker.RangePicker status="error" />
    <TimePicker.RangePicker status="warning" />
  </Space>
);

export default App;
受控组件

value 和 onChange 需要配合使用。

expand codeexpand code
TypeScript
JavaScript
import React, { useState } from 'react';
import { TimePicker } from 'mogud';
import type { Dayjs } from 'dayjs';

const App: React.FC = () => {
  const [value, setValue] = useState<Dayjs | null>(null);

  const onChange = (time: Dayjs) => {
    setValue(time);
  };

  return <TimePicker value={value} onChange={onChange} />;
};

export default App;
禁用

禁用时间选择。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';

dayjs.extend(customParseFormat);

const App: React.FC = () => <TimePicker defaultValue={dayjs('12:08:23', 'HH:mm:ss')} disabled />;

export default App;
步长选项

可以使用 hourStep minuteStep secondStep 按步长展示可选的时分秒。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';

const App: React.FC = () => <TimePicker minuteStep={15} secondStep={10} hourStep={1} />;

export default App;
12 小时制

12 小时制的时间选择器,默认的 format 为 h:mm:ss a。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { Space, TimePicker } from 'mogud';
import type { Dayjs } from 'dayjs';

const onChange = (time: Dayjs, timeString: string) => {
  console.log(time, timeString);
};

const App: React.FC = () => (
  <Space wrap>
    <TimePicker use12Hours onChange={onChange} />
    <TimePicker use12Hours format="h:mm:ss A" onChange={onChange} />
    <TimePicker use12Hours format="h:mm a" onChange={onChange} />
  </Space>
);

export default App;
无边框

无边框样式。

expand codeexpand code
TypeScript
JavaScript
import React from 'react';
import { TimePicker } from 'mogud';

const { RangePicker } = TimePicker;

const App: React.FC = () => (
  <>
    <TimePicker bordered={false} />
    <RangePicker bordered={false} />
  </>
);

export default App;

API


import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat'
dayjs.extend(customParseFormat)
<TimePicker defaultValue={dayjs('13:30:56', 'HH:mm:ss')} />;
参数说明类型默认值版本
allowClear是否展示清除按钮booleantrue
autoFocus自动获取焦点booleanfalse
bordered是否有边框booleantrue
changeOnBlur失去焦点时触发 change 事件,例如 datetime 下不再需要点击确认按钮booleanfalse5.5.0
className选择器类名string-
clearIcon自定义的清除图标ReactNode-
clearText清除按钮的提示文案stringclear
defaultValue默认时间dayjs-
disabled禁用全部操作booleanfalse
disabledTime不可选择的时间DisabledTime-4.19.0
format展示的时间格式stringHH:mm:ss
getPopupContainer定义浮层的容器,默认为 body 上新建 divfunction(trigger)-
hideDisabledOptions隐藏禁止选择的选项booleanfalse
hourStep小时选项间隔number1
inputReadOnly设置输入框为只读(避免在移动设备上打开虚拟键盘)booleanfalse
minuteStep分钟选项间隔number1
open面板是否打开booleanfalse
placeholder没有值的时候显示的内容string | [string, string]请选择时间
placement选择框弹出的位置bottomLeft bottomRight topLeft topRightbottomLeft
popupClassName弹出层类名string-
popupStyle弹出层样式对象object-
renderExtraFooter选择框底部显示自定义的内容() => ReactNode-
secondStep秒选项间隔number1
showNow面板是否显示“此刻”按钮boolean-4.4.0
size输入框大小,large 高度为 40px,small 为 24px,默认是 32pxlarge | middle | small-
status设置校验状态'error' | 'warning'-4.19.0
suffixIcon自定义的选择框后缀图标ReactNode-
use12Hours使用 12 小时制,为 true 时 format 默认为 h:mm:ss abooleanfalse
value当前时间dayjs-
onChange时间发生变化的回调function(time: dayjs, timeString: string): void-
onOpenChange面板打开/关闭时的回调(open: boolean) => void-

DisabledTime

type DisabledTime = (now: Dayjs) => {
disabledHours?: () => number[];
disabledMinutes?: (selectedHour: number) => number[];
disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
};

方法

名称描述版本
blur()移除焦点
focus()获取焦点

RangePicker

属性与 DatePicker 的 RangePicker 相同。还包含以下属性:

参数说明类型默认值版本
disabledTime不可选择的时间RangeDisabledTime-4.19.0
order始末时间是否自动排序booleantrue4.1.0

RangeDisabledTime

type RangeDisabledTime = (
now: Dayjs,
type = 'start' | 'end',
) => {
disabledHours?: () => number[];
disabledMinutes?: (selectedHour: number) => number[];
disabledSeconds?: (selectedHour: number, selectedMinute: number) => number[];
};

FAQ

  • 如何在 TimePicker 中使用自定义日期库(如 Moment.js )