Ant Design学习——TimePicker

2021SC@SDUSC

TimePicker时间选择框

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

API

import moment from 'moment';
<TimePicker defaultValue={moment('13:30:56', 'HH:mm:ss')} />;
参数说明类型默认值
allowClear是否展示清除按钮booleantrue
autoFocus自动获取焦点booleanfalse
bordered是否有边框booleantrue
className选择器类名string-
clearIcon自定义的清除图标ReactNode-
clearText清除按钮的提示文案stringclear
defaultValue默认时间moment-
disabled禁用全部操作booleanfalse
disabledHours禁止选择部分小时选项function()-
disabledMinutes禁止选择部分分钟选项function(selectedHour)-
disabledSeconds禁止选择部分秒选项function(selectedHour, selectedMinute)-
format展示的时间格式stringHH:mm:ss
getPopupContainer定义浮层的容器,默认为 body 上新建 divfunction(trigger)-
hideDisabledOptions隐藏禁止选择的选项booleanfalse
hourStep小时选项间隔number1
inputReadOnly设置输入框为只读(避免在移动设备上打开虚拟键盘)booleanfalse
minuteStep分钟选项间隔number1
open面板是否打开booleanfalse
placeholder没有值的时候显示的内容string | [string, string]请选择时间
popupClassName弹出层类名string-
popupStyle弹出层样式对象object-
renderExtraFooter选择框底部显示自定义的内容() => ReactNode-
secondStep秒选项间隔number1
showNow面板是否显示“此刻”按钮boolean-
suffixIcon自定义的选择框后缀图标ReactNode-
use12Hours使用 12 小时制,为 true 时 format 默认为 h:mm:ss abooleanfalse
value当前时间moment-
onChange时间发生变化的回调function(time: moment, timeString: string): void-
onOpenChange面板打开/关闭时的回调(open: boolean) => void-

RangePicker

属性与 DatePickerRangePicker相同。还包含以下属性:

参数说明类型默认值版本
order始末时间是否自动排序booleantrue4.1.0

部分源码

const { TimePicker: InternalTimePicker, RangePicker: InternalRangePicker } = DatePicker;

可以看出TimePicker与之前提到的DatePicker的关系。

import { Moment } from 'moment';
import * as React from 'react';
import DatePicker from '../date-picker';
import { PickerTimeProps, RangePickerTimeProps } from '../date-picker/generatePicker';
import devWarning from '../_util/devWarning';

引入moment以及datepicker,利用到了上次分析过的日期选择框。

export interface TimePickerLocale {
  placeholder?: string;
  rangePlaceholder?: [string, string];
}

export interface TimeRangePickerProps extends Omit<RangePickerTimeProps<Moment>, 'picker'> {
  popupClassName?: string;
}

const RangePicker = React.forwardRef<any, TimeRangePickerProps>((props, ref) => (
  <InternalRangePicker
    {...props}
    dropdownClassName={props.popupClassName}
    picker="time"
    mode={undefined}
    ref={ref}
  />
));

接口,包含没有值时现实的内容,弹出层样式对象。
随后利用TimeRangePickerProps使用forwardRef函数传递ref至RangePicker。


export interface TimePickerProps extends Omit<PickerTimeProps<Moment>, 'picker'> {
  addon?: () => React.ReactNode;
  popupClassName?: string;
}

const TimePicker = React.forwardRef<any, TimePickerProps>(
  ({ addon, renderExtraFooter, popupClassName, ...restProps }, ref) => {
    const internalRenderExtraFooter = React.useMemo(() => {
      if (renderExtraFooter) {
        return renderExtraFooter;
      }
      if (addon) {
        devWarning(
          false,
          'TimePicker',
          '`addon` is deprecated. Please use `renderExtraFooter` instead.',
        );
        return addon;
      }
      return undefined;
    }, [addon, renderExtraFooter]);

    return (
      <InternalTimePicker
        {...restProps}
        dropdownClassName={popupClassName}
        mode={undefined}
        ref={ref}
        renderExtraFooter={internalRenderExtraFooter}
      />
    );
  },
);

可以看出此处TimePicker也采用了类似RangePicker的代码结构。

TimePicker.displayName = 'TimePicker';

type MergedTimePicker = typeof TimePicker & {
  RangePicker: typeof RangePicker;
};

(TimePicker as MergedTimePicker).RangePicker = RangePicker;

export default TimePicker as MergedTimePicker;

将以上的TimePicker与RangePicker类型融合,生成MergedTimePicker,融合的TimePicker,这样可以一并导出以供使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值