跳转到内容

Calendar 日历

何时使用

当数据是日期或按照日期划分时,例如日程、课表、价格日历等,农历等。目前支持年/月切换。

代码演示

基本

loading

通知事项日历

loading

卡片模式

loading

选择功能

loading

周数

loading

自定义头部

loading

API

注意:Calendar 部分 locale 是从 value 中读取,所以请先正确设置 dayjs 的 locale。

jsx
// 默认语言为 en-US,所以如果需要使用其他语言,推荐在入口文件全局设置 locale
// import dayjs from 'dayjs';
// import 'dayjs/locale/zh-cn';
// dayjs.locale('zh-cn');

<Calendar cellRender={cellRender} onPanelChange={onPanelChange} onSelect={onSelect} />
参数说明类型默认值版本
cellRender自定义单元格的内容function(current: dayjs, info: { prefixCls: string, originNode: VNode, today: dayjs, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => VNode-5.4.0
dateFullCellRender自定义渲染日期单元格,返回内容覆盖单元格,>= 5.4.0 请用 fullCellRenderfunction(date: Dayjs): VNode-< 5.4.0
fullCellRender自定义单元格的内容function(current: dayjs, info: { prefixCls: string, originNode: VNode, today: dayjs, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => VNode-5.4.0
defaultValue默认展示的日期dayjs-
disabledDate不可选择的日期,参数为当前 value,注意使用时不要直接修改(currentDate: Dayjs) => boolean-
fullscreen是否全屏显示booleantrue
showWeek是否显示周数列booleanfalse5.23.0
headerRender自定义头部内容function(object:{value: Dayjs, type: 'year' | 'month', onChange: f(), onTypeChange: f()})-
locale国际化配置object(默认配置)
mode初始模式month | yearmonth
validRange设置可以显示的日期[dayjs, dayjs]-
value展示日期dayjs-
onChange日期变化回调function(date: Dayjs)-
onPanelChange日期面板变化回调function(date: Dayjs, mode: string)-
onSelect选择日期回调,包含来源信息function(date: Dayjs, info: { source: 'year' | 'month' | 'date' | 'customize' })-info: 5.6.0

FAQ

如何仅获取来自面板点击的日期?

onSelect 事件提供额外的来源信息,你可以通过 info.source 来判断来源:

tsx
<Calendar
  onSelect={(date, { source }) => {
    if (source === 'date') {
      console.log('Panel Select:', source);
    }
  }}
/>

基于 MIT 许可发布