Calendar日历

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

    基本

    一个通用的日历面板,支持年/月切换。

    一个复杂的应用示例,用 和 monthCellRender 函数来自定义需要渲染的数据。

    1. import { Calendar, Badge } from 'antd';
    2. function getListData(value) {
    3. let listData;
    4. switch (value.date()) {
    5. case 8:
    6. listData = [
    7. { type: 'warning', content: 'This is warning event.' },
    8. { type: 'success', content: 'This is usual event.' },
    9. ];
    10. break;
    11. case 10:
    12. listData = [
    13. { type: 'warning', content: 'This is warning event.' },
    14. { type: 'success', content: 'This is usual event.' },
    15. { type: 'error', content: 'This is error event.' },
    16. ];
    17. break;
    18. case 15:
    19. listData = [
    20. { type: 'warning', content: 'This is warning event' },
    21. { type: 'success', content: 'This is very long usual event。。....' },
    22. { type: 'error', content: 'This is error event 1.' },
    23. { type: 'error', content: 'This is error event 2.' },
    24. { type: 'error', content: 'This is error event 3.' },
    25. { type: 'error', content: 'This is error event 4.' },
    26. ];
    27. }
    28. return listData || [];
    29. }
    30. function dateCellRender(value) {
    31. const listData = getListData(value);
    32. return (
    33. <ul className="events">
    34. {listData.map(item => (
    35. <li key={item.content}>
    36. <Badge status={item.type} text={item.content} />
    37. </li>
    38. ))}
    39. </ul>
    40. );
    41. }
    42. function getMonthData(value) {
    43. if (value.month() === 8) {
    44. return 1394;
    45. }
    46. }
    47. function monthCellRender(value) {
    48. const num = getMonthData(value);
    49. return num ? (
    50. <div className="notes-month">
    51. <section>{num}</section>
    52. <span>Backlog number</span>
    53. ) : null;
    54. }
    55. ReactDOM.render(
    56. <Calendar dateCellRender={dateCellRender} monthCellRender={monthCellRender} />,
    57. mountNode,
    58. );

    Calendar 日历 - 图3

    卡片模式

    1. import { Calendar } from 'antd';
    2. function onPanelChange(value, mode) {
    3. console.log(value, mode);
    4. }
    5. ReactDOM.render(
    6. <div style={{ width: 300, border: '1px solid #d9d9d9', borderRadius: 4 }}>
    7. <Calendar fullscreen={false} onPanelChange={onPanelChange} />
    8. </div>,
    9. mountNode,
    10. );

    一个通用的日历面板,支持年/月切换。

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

    1. // 默认语言为 en-US,所以如果需要使用其他语言,推荐在入口文件全局设置 locale
    2. // import moment from 'moment';
    3. // import 'moment/locale/zh-cn';
    4. // moment.locale('zh-cn');
    5. <Calendar
    6. dateCellRender={dateCellRender}
    7. monthCellRender={monthCellRender}
    8. onPanelChange={onPanelChange}
    9. onSelect={onSelect}