import { DatePicker } from 'rsuite';
// or
import DatePicker from 'rsuite/DatePicker';
演示
默认
尺寸
一键选值
外观
撑满
占位符
日期与时间
只显示月份
只显示时间
以 12 小时制的格式显示
禁用与只读
禁用输入
DatePicker
默认是可以通过键盘输入日期和时间的,如果您希望禁用它,可以通过设置 editable={false}
来禁用编辑。
设置本地语言
DatePicker
支持本地语言自定义配置,但是我们更推荐使用统一国际化配置。
位置
提示:设置为
auto*
时, 尝试滚动页面,或者改变浏览器大小,会自动显示在合适的位置。
自定义快捷项
示例中点击“前一天”,不会关闭浮层,是因为配置 closeOverlay:boolean
参数,该参数用于设置点击快捷项以后是否关闭浮层,默认为 true
。
受控
选择范围
显示周数
原生的选择器
如果您只需要满足简单的日期选择功能,完全可以使用浏览器支持的原生选择器。
无障碍设计
了解更多有关无障碍设计的信息。
Props
<DatePicker>
属性名称 | 类型(默认值) |
描述 |
---|---|---|
appearance | 'default' | 'subtle' ('default') |
设置外观 |
block | boolean | 堵塞整行 |
calendarDefaultDate | Date | 日历面板默认呈现的日期时间 |
caretAs | ElementType | 自定义右侧箭头图标的组件 |
cleanable | boolean (true) |
可以清除 |
container | HTMLElement | (() => HTMLElement) | 设置渲染的容器 |
defaultOpen | boolean | 默认打开 |
defaultValue | Date | 默认值 |
disabled | boolean | 禁用组件 |
disabledDate | (date:Date) => boolean | 已弃用。 使用 shouldDisableDate 代替 |
disabledHours | (hour:number, date:Date) => boolean | 已弃用。 使用 shouldDisableHour 代替 |
disabledMinutes | (minute:number, date:Date) => boolean | 已弃用。 使用 shouldDisableMinute 代替 |
disabledSeconds | (second:number, date:Date) => boolean | 已弃用。 使用 shouldDisableSecond 代替 |
editable | boolean (true) |
渲染为 Input 输入框,可以通过键盘输入日期 |
format | string ('yyyy-MM-dd') |
日期显示格式化 |
hideHours | (hour:number, date:Date) => boolean | 隐藏小时 |
hideMinutes | (minute:number, date:Date) => boolean | 隐藏分钟 |
hideSeconds | (second:number, date:Date) => boolean | 隐藏秒 |
isoWeek | boolean | ISO 8601 标准, 每个日历星期从星期一开始,星期日为第 7 天 |
limitEndYear | number (1000) |
相对当前选择日期,设置可选年份上限 |
limitStartYear | number | 相对当前选择日期,设置可选年份下限 |
locale | CalendarLocaleType | 本地化的文本 |
menuClassName | string | 选项菜单的 className |
onChange | (date: Date) => void | 值改变后的回调函数 |
onChangeCalendarDate | (date: Date, event) => void | 日历日期改变后的回调函数 |
onClean | (event) => void | 清除值后的回调函数 |
onClose | () => void | 关闭回调函数 |
onEnter | () => void | 显示前动画过渡的回调函数 |
onEntered | () => void | 显示后动画过渡的回调函数 |
onEntering | () => void | 显示中动画过渡的回调函数 |
oneTap | boolean | 一个点击完成选择日期 |
onExit | () => void | 退出前动画过渡的回调函数 |
onExited | () => void | 退出后动画过渡的回调函数 |
onExiting | () => void | 退出中动画过渡的回调函数 |
onNextMonth | (date: Date) => void | 切换到下一月的回调函数 |
onOk | (date: Date, event) => void | 点击确定后的回调函数 |
onOpen | () => void | 打开回调函数 |
onPrevMonth | (date: Date) => void | 切换到上一月的回调函数 |
onSelect | (date: Date) => void | 选择日期或者时间的回调函数 |
onToggleMonthDropdown | (open: boolean) => void | 切换到月份视图的回调函数 |
onToggleTimeDropdown | (open: boolean) => void | 切换到时间视图的回调函数 |
open | boolean | 打开 (受控) |
placeholder | string | 没有值时候默认显示内容 |
placement | Placement ('bottomStart') |
显示位置 |
preventOverflow | boolean | 防止浮动元素溢出 |
ranges | Range[] (Ranges) | 快捷项配置 |
shouldDisableDate | (date:Date) => boolean | 禁用日期 |
shouldDisableHour | (hour:number, date:Date) => boolean | 禁用小时 |
shouldDisableMinute | (minute:number, date:Date) => boolean | 禁用分钟 |
shouldDisableSecond | (second:number, date:Date) => boolean | 禁用秒 |
showMeridian | boolean | 显示 12 小时制的时间格式 |
showWeekNumbers | boolean | 显示周数量 |
size | 'lg' | 'md' | 'sm' | 'xs' ('md') |
组件设置尺寸 |
toggleAs | ElementType ('a') |
为组件自定义元素类型 |
value | Date | 值`受控 |
ts:Placement
type Placement =
| 'bottomStart'
| 'bottomEnd'
| 'topStart'
| 'topEnd'
| 'leftStart'
| 'leftEnd'
| 'rightStart'
| 'rightEnd'
| 'auto'
| 'autoVerticalStart'
| 'autoVerticalEnd'
| 'autoHorizontalStart'
| 'autoHorizontalEnd';
ts:Range
interface Range {
label: ReactNode;
value: Date | ((date: Date) => Date);
closeOverlay?: boolean;
// Sets the position where the predefined range is displayed, the default is bottom.
placement?: 'bottom' | 'left';
}
ts:Ranges
import { addDays } from 'date-fns';
const Ranges = [
{
label: 'today',
value: new Date(),
closeOverlay: true
},
{
label: 'yesterday',
value: addDays(new Date(), -1),
closeOverlay: true
}
];