You need to enable JavaScript to run this app. React Date Picker指定日期高亮功能未正常生效的问题及修复方案
优惠活动
大模型
产品
解决方案
定价
更多

React Date Picker指定日期高亮功能未正常生效的问题及修复方案

React Date Picker 标记日期高亮失效问题修复

使用React Date Picker时遇到已标记需要高亮的日期未正常显示高亮效果的问题,目前已完成修复,方案如下:

原有问题代码

const handleDayClick = (value) => {
    var tempselectedBlackOutDays = selectedBlackOutDays;
    const selectedIndex = tempselectedBlackOutDays.findIndex((selectedDay) =>
      isEqual(selectedDay, value)
    );

    if (selectedIndex >= 0) {
      tempselectedBlackOutDays.splice(selectedIndex, 1);
    } else {
      tempselectedBlackOutDays.push(value);
    }

    setSelectedBlackOutDays(tempselectedBlackOutDays);
  };

问题原因

核心原因是React的state浅比较机制:上述代码中直接将原有state数组selectedBlackOutDays的引用赋值给tempselectedBlackOutDays,后续的splice、push操作都是直接修改原数组,最终传入setSelectedBlackOutDays的仍然是和原state引用完全相同的数组,React会判定状态未发生变更,不会触发组件重渲染,因此高亮效果不会更新。

修复方法

将代码最后一行的状态更新逻辑改为传入新的数组实例即可,修改后代码如下:

setSelectedBlackOutDays(tempselectedBlackOutDays.map((x) => x))

也可以用数组扩展运算符实现相同效果:setSelectedBlackOutDays([...tempselectedBlackOutDays]),只要保证传入的是新的数组引用,就能触发React重渲染,高亮效果即可正常显示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 09:30:05