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

MUI DatePicker自定义PickersDay加ID后需双击选中问题求助

MUI DatePicker自定义日期组件导致双击选中问题及正确添加ID方法

问题背景

需求是为MUI DatePicker的每个日期按钮添加唯一ID,用于自动化测试场景。最初的实现代码如下:

const CustomDay = (props: any) => {
    const { day } = props;
    const uniqueId = `day-${format(day, 'yyyy-MM-dd')}`; // unique ID for each day
    return (
      <div id={uniqueId} key={uniqueId}>
        <PickersDay {...props} day={day} />
      </div>
    );
};

通过slots={{ day: CustomDay }}注入DatePicker的day插槽后,出现了需要快速双击才能选中日期的问题。

错误原因

在外层额外嵌套的<div>会拦截第一次点击事件,导致PickersDay组件无法正常接收点击触发的选中逻辑。MUI的日期选择组件依赖内部的事件处理流程完成状态切换,多余的容器节点破坏了事件传递链,所以需要通过双击才能触发实际的选中操作。

正确实现方式

无需额外嵌套容器,直接将唯一ID绑定到PickersDay组件本身即可:

import { format } from 'date-fns';
import { PickersDay } from '@mui/x-date-pickers';

const CustomDay = (props: any) => {
  const { day } = props;
  const uniqueId = `day-${format(day, 'yyyy-MM-dd')}`;
  return <PickersDay {...props} id={uniqueId} />;
};

这样既为每个日期按钮添加了唯一ID,完全满足自动化测试的标识需求,同时保留了组件原有的交互逻辑,不会出现点击失效或需要双击的问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:22:13