安全下载,经人工审核 精选优质前端模板 支持定制开发咨询 持续更新资源
纯 React 极简中文月历日期切换 HTML 组件模板
编号:日历组件

纯 React 极简中文月历日期切换 HTML 组件模板

大小 10 KB
总文件 6 个
发布 2026-09-01
更新 2026-09-01
架构 React
分类 前端资源 - 日期与时间
目录 结构详情
童哲网
童哲网
 ·  专注前端模板资源分享
人工审核 安全可信

    这是一款用 React 18 UMD + 原生 `Date` 对象写的极简月历组件:顶部一行显示当前年份、月份和左右翻月箭头,点年份/月份文字直接跳回今天;下方 7 列网格展示星期缩写和整月日期,今天用高亮圆点标记,跨月补齐的日期灰显不可选。组件全部靠 `useState` + `useMemo` 管理年月,没有任何第三方依赖,脚本仅 168 行,可以直接扔进任何 CDN 引入 React 的静态页里跑起来。适合作为业务日历、预约系统、活动打卡的基础壳。

这款极简日历组件的核心亮点

  • 月份数据全部由 `new Date(year, month, 0).getDate()` 现算:给 JS Date 传第 0 天等价于「上个月最后一天」,一句话拿到当月天数,无需引入 date-fns 或 dayjs。

  • 跨月补齐逻辑清晰:拿到当月 1 号星期几作为 `startDay`,从上月末尾切 `startDay` 天补前面;拿到当月末星期几作为 `endDay`,从下月开头切 `6 - endDay` 天补后面,正好铺满 6×7 网格。

  • 今日高亮不比对 Date 对象而是拼字符串 `${year}${month}${date}` 做全等,避免时区导致的一日之差;`useMemo` 缓存了这个拼串,年月切换时不会每次重算。

  • 翻月的加减法自己写:月份为 1 时上月切到去年 12 月、月份为 12 时下月切到明年 1 月,边界都在 `getPrevYearMonth` / `getNextYearMonth` 两个纯函数里,方便单测。

React Hooks 在这套日历里的三个应用取舍

其一,`year` 和 `month` 分开存两个 `useState`,而不是合成一个对象,改起来更直接、也避免 setState 合并时的额外闭包问题。其二,`todayStr` 用 `useMemo` 依赖 today,只有一次计算——虽然 today 在这版里没变,但为将来做「切日切换」预留了。其三,DOM 全部用 `React.createElement` 而非 JSX,好处是不需要 Babel/构建就能跑,缺点是可读性差一些,源码中均有注释可对照。

接入自己项目要改什么

要接后端事件(把有事件的日期标红),在 `ActiveMonth` 的 `visibleMonth.map` 里给对应 el 加一个 `className: "has-event"` 判断即可,事件数据从 props 传入。要改语言,把 `week` 数组换成中文 `["日","一","二","三","四","五","六"]`。要国际化为「周一开头」,把 `week` 和 `startDay/endDay` 的偏移都统一调整(当前是周日开头)。要接可选日期回调,给 `.date` 加 onClick 并向上通知即可,逻辑很短。

浏览器兼容性:需支持 ES2015 及以上,主流浏览器均可;React 18 用 UMD 版本从 CDN 加载,可离线替换为本地文件。详细运行方法请参见压缩包内的帮助文档。

常见问题

能改成周历(一周一行)显示吗

可以。改造 `visibleMonth` 生成逻辑,按当前日所在周的周日到周六裁 7 天即可;样式部分只需调 `.dates-wrapper` 的 grid 行数。

怎么让日期支持点击回调

在 `.date` 元素上加 `onClick: () => props.onSelect(date)`,把日期通过 props 上抛到父组件,再由业务代码决定弹窗、跳详情或高亮。

要显示农历/节假日怎么办

推荐引入 lunar-javascript 或 solarlunar 库,在渲染每个 `.date` 时按 year/month/date 查一次,把返回的农历/节日字符串放到 `

` 的二级子元素里。

可以接入 Vue 或 vanilla JS 项目吗

不能直接接入,但算法层(`getMonthDetail` / `getPrev...` / `getNext...`)是纯函数,可原样搬到 Vue、Svelte 或 vanilla JS 里,只有渲染层需要重写。

适合放在哪些页面

适合日程管理、预约挂号、活动打卡、后台管理系统的日期筛选器、SaaS 应用的日历视图。下载源码后可直接放进 React 项目作为业务基础日历

模板目录结构

    免责声明

    • 如非特殊说明,本站对本文提供的代码或者素材不拥有任何权利,其版权归原著者拥有。
    • 以上提供的代码或者素材均为作者提供和网友推荐收集整理而来,仅供学习和研究使用。
    • 如有侵犯你版权的,请来信(邮箱:tongzhewangluo@163.com)指出,核实后本站将立即改正。
    • 如有链接无法下载、失效或广告,请通过网站提供的微信联系作者!
    • 以上资源售价只是赞助,不代表代码或者素材本身价格,收取费用仅维持本站的服务器开销。
    • 所有代码素材效果均为演示打包,最终效果请参考演示效果,本站不提供任何技术支持和服务。
    • 代码素材均为虚拟物品,演示和描述无错的情况下,无法进行退换服务。

    最新资源

    纯 React 极简中文月历日期切换 HTML 组件模板

    日历组件

    纯 React 极简中文月历日期切换 HTML 组件模板
    CSS View Transitions 便当格局图片换位切换动画模板

    图片换为切换

    CSS View Transitions 便当格局图片换位切换动画模板
    餐厅堂食订座与外卖点单 HTML 建站模板,菜单详情页与在线订座双通道

    瑞斯托

    餐厅堂食订座与外卖点单 HTML 建站模板,菜单详情页与在线订座双通道
    汽修改装与车源交易一站式汽车 HTML 建站模板,含预约工单、配件商城与改装案例

    拓奇克

    汽修改装与车源交易一站式汽车 HTML 建站模板,含预约工单、配件商城与改装案例
    React Motion滤镜标签组切换文字弹性展开动画

    弹簧动画

    React Motion滤镜标签组切换文字弹性展开动画
    Three.js 3D量子神经网络粒子交互动画模板

    3D神经网络粒子

    Three.js 3D量子神经网络粒子交互动画模板