You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Calendar实现工作日边框动态变色及日期悬停文本切换

React-Calendar 实现工作日动态边框+悬停文本切换

1. 工作日边框动态颜色实现

通过tileClassName属性判断日期是否为工作日,结合CSS自定义边框样式:

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

const CustomCalendar = () => {
  // 判断是否为工作日(周一至周五)
  const isWeekday = (date) => {
    const day = date.getDay();
    return day !== 0 && day !== 6;
  };

  return (
    <Calendar
      // 给工作日添加自定义类名
      tileClassName={({ date }) => isWeekday(date) ? 'weekday-tile' : ''}
    />
  );
};

在CustomCalendar.css中添加样式:

.weekday-tile {
  border: 2px solid #2196F3; /* 自定义工作日边框颜色 */
  border-radius: 4px;
}

如果需要动态切换颜色(比如根据状态变化),可以改用tileStyle属性直接返回动态样式对象:

const [borderColor, setBorderColor] = useState('#2196F3');

// ...

<Calendar
  tileStyle={({ date }) => isWeekday(date) ? { border: `2px solid ${borderColor}` } : {}}
/>

2. 鼠标悬停日期切换文本内容

结合tileContent和状态管理,实现悬停时切换文本:

const CustomCalendar = () => {
  const [hoveredDate, setHoveredDate] = useState(null);
  const [hoverText, setHoverText] = useState('');

  const handleMouseEnter = (date) => {
    setHoveredDate(date);
    setHoverText(`今天是${date.toLocaleDateString()}`); // 自定义悬停文本
  };

  const handleMouseLeave = () => {
    setHoveredDate(null);
    setHoverText('');
  };

  return (
    <Calendar
      tileContent={({ date }) => (
        <div 
          onMouseEnter={() => handleMouseEnter(date)}
          onMouseLeave={handleMouseLeave}
          className="tile-content"
        >
          {/* 显示默认文本或悬停文本 */}
          {hoveredDate && date.getTime() === hoveredDate.getTime() ? hoverText : ''}
        </div>
      )}
    />
  );
};

添加CSS调整文本样式:

.tile-content {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

注意事项

  • 确保react-calendar版本支持tileClassName、tileStyle和tileContent的函数式用法
  • 比较日期时要用getTime(),避免直接对象比较导致的判断错误
  • 两个功能可以直接合并使用,只需把代码整合即可

内容的提问来源于stack exchange,提问作者Jaskirat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 13:45:28