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

如何禁用react-calendar中所有日期的点击及高亮功能?

禁用react-calendar的日期点击选中与高亮功能

在react-calendar v4.7.0的月视图中,点击日期会自动添加react-calendar__tile--active类实现高亮,同时触发onClickDay回调,但官方并没有提供直接禁用该功能的配置项。用CSS覆盖样式的话,没法彻底消除悬停等交互反馈,所以更推荐从JS层面阻断默认行为。

你之前尝试的onClickDay返回无效,是因为源码里onClickDay的返回值被onClickTile包裹后直接忽略了。但查看源码可以发现,drillDown函数会判断onClickTile的返回值——如果返回false,就会跳过后续的选中和视图切换逻辑。

直接使用onClickTile回调来阻断日期点击的默认行为即可,代码示例如下:

<Calendar
  onClickTile={(value, event) => {
    // 只拦截日期tile的点击,保留月份切换等其他交互
    const isDayTile = event.target.classList.contains('react-calendar__tile');
    if (isDayTile) {
      event.preventDefault();
      event.stopPropagation();
      return false; // 阻止默认选中逻辑执行
    }
    return true; // 其他tile的交互正常保留
  }}
  // 你的其他配置:比如已设置的高亮日期、月份切换监听等
/>

这个方法的核心是利用onClickTile的返回值影响drillDown函数的执行逻辑,返回false后,组件就不会给点击的日期添加react-calendar__tile--active类,也不会触发默认的选中行为,完美解决需求。

内容的提问来源于stack exchange,提问作者Lajos Mészáros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 18:23:26