如何禁用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
相关产品推荐
相关产品推荐

