插件窝 干货文章 Ant Design Calendar组件如何只在当前组件内将周日显示在首列?

Ant Design Calendar组件如何只在当前组件内将周日显示在首列?

周日 dateCellRender 定义 headerRender 665    来源:    2025-03-20

在 Ant Design 的 Calendar 组件中,默认情况下周日是显示在最后一列的。如果你希望将周日显示在首列,可以通过自定义 dateFullCellRenderdateCellRender 来实现。

以下是一个示例代码,展示如何将周日显示在首列:

import React from 'react';
import { Calendar } from 'antd';
import moment from 'moment';

const CustomCalendar = () => {
  // 自定义日期单元格渲染
  const dateCellRender = (value) => {
    return (
      <div>
        {value.date()}
      </div>
    );
  };

  // 自定义日历头部
  const headerRender = ({ value, type, onChange, onTypeChange }) => {
    const weekDays = ['日', '一', '二', '三', '四', '五', '六'];
    return (
      <div style={{ display: 'flex', justifyContent: 'space-around', padding: '8px 0' }}>
        {weekDays.map((day, index) => (
          <div key={index} style={{ fontWeight: 'bold' }}>
            {day}
          </div>
        ))}
      </div>
    );
  };

  return (
    <Calendar
      dateCellRender={dateCellRender}
      headerRender={headerRender}
      // 设置周日为每周的第一天
      locale={{
        weekStart: 0, // 0 表示周日
      }}
    />
  );
};

export default CustomCalendar;

关键点解释:

  1. locale.weekStart: 通过设置 locale.weekStart0,可以将周日作为每周的第一天。
  2. headerRender: 自定义日历头部,确保周日的显示顺序正确。
  3. dateCellRender: 自定义日期单元格的渲染内容。

注意事项:

  • locale.weekStart 是 Ant Design 4.x 版本中的一个属性,用于设置每周的第一天。如果你使用的是 Ant Design 3.x 版本,可能需要通过其他方式来实现类似的效果。
  • 如果你需要更复杂的自定义,可以考虑使用 dateFullCellRender 来完全控制每个日期单元格的渲染。

通过这种方式,你可以在当前组件内将周日显示在首列。