当前位置:首页 > React

react实现日历

2026-01-26 15:55:50React

使用 React 实现日历

日历组件在 Web 应用中常用于日期选择、事件展示等场景。以下是几种实现日历的常见方法:

使用第三方库(如 react-calendar

安装 react-calendar 库:

npm install react-calendar

基本使用示例:

import React, { useState } from 'react';
import Calendar from 'react-calendar';
import 'react-calendar/dist/Calendar.css';

function App() {
  const [date, setDate] = useState(new Date());

  return (
    <div>
      <Calendar onChange={setDate} value={date} />
    </div>
  );
}

export default App;

该库提供丰富的功能,如日期范围选择、自定义样式和国际化支持。

手动实现简单日历

如果需要完全自定义的日历,可以手动实现:

import React, { useState } from 'react';

function Calendar() {
  const [currentDate, setCurrentDate] = useState(new Date());

  const year = currentDate.getFullYear();
  const month = currentDate.getMonth();

  const firstDay = new Date(year, month, 1).getDay();
  const daysInMonth = new Date(year, month + 1, 0).getDate();

  const renderDays = () => {
    const days = [];

    // 空白格子(上月)
    for (let i = 0; i < firstDay; i++) {
      days.push(<div key={`empty-${i}`} className="empty-day"></div>);
    }

    // 当月日期
    for (let day = 1; day <= daysInMonth; day++) {
      days.push(
        <div key={day} className="day" onClick={() => console.log(day)}>
          {day}
        </div>
      );
    }

    return days;
  };

  return (
    <div className="calendar">
      <div className="header">
        <button onClick={() => setCurrentDate(new Date(year, month - 1, 1))}>
          Prev
        </button>
        <h2>{`${year}年 ${month + 1}月`}</h2>
        <button onClick={() => setCurrentDate(new Date(year, month + 1, 1))}>
          Next
        </button>
      </div>
      <div className="weekdays">
        {['日', '一', '二', '三', '四', '五', '六'].map(day => (
          <div key={day}>{day}</div>
        ))}
      </div>
      <div className="days-grid">{renderDays()}</div>
    </div>
  );
}

export default Calendar;

添加样式

基本 CSS 样式示例:

.calendar {
  width: 300px;
  border: 1px solid #ddd;
  font-family: Arial;
}

.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px;
  background: #f5f5f5;
}

.weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  text-align: center;
  background: #eee;
}

.days-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 5px;
  padding: 5px;
}

.day, .empty-day {
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.day:hover {
  background: #e0e0e0;
  cursor: pointer;
}

高级功能扩展

  1. 日期选择:添加状态管理记录选中的日期
  2. 事件标记:在特定日期显示标记点
  3. 范围选择:支持选择日期范围
  4. 国际化:支持不同语言和周起始日
  5. 主题定制:通过 CSS 变量或 styled-components 实现主题切换

对于复杂需求,建议使用成熟的日历库如:

react实现日历

  • react-big-calendar(适合日程安排)
  • @fullcalendar/react(功能全面)
  • react-datepicker(专注日期选择)

标签: 日历react
分享给朋友:

相关文章

如何评价react native

如何评价react native

React Native 的优势 跨平台开发效率高:基于 JavaScript 和 React 语法,可同时开发 iOS 和 Android 应用,减少重复代码量。性能接近原生:通过原生组件渲染,性能…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react 如何运行

react 如何运行

运行 React 项目的步骤 安装 Node.js 确保系统已安装 Node.js(建议版本 16+),可通过官网下载并安装。安装后验证版本: node -v npm -v 创建 React 项目…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…

react如何debugger

react如何debugger

调试 React 应用的方法 使用浏览器开发者工具进行调试 React 开发者工具(React DevTools)是调试 React 应用的必备工具。安装 Chrome 或 Firefox 扩展后,可…