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

如何移除@material-ui/pickers日历组件的默认选中日期?

解决@material-ui/pickers日历首次打开不默认选中今日的问题

要让@material-ui/pickers的日期选择器首次打开时保持空状态,核心是控制组件的绑定值初始化为空,避免组件默认将今日设为选中值,具体实现如下:

核心思路

组件默认会把当前日期作为初始选中值,因此需要将绑定的状态变量初始化为null(或undefined),同时避免设置defaultValue为当前日期。

代码示例

函数组件(React Hooks)

import React, { useState } from 'react';
import DatePicker from '@material-ui/pickers/DatePicker';
import { MuiPickersUtilsProvider } from '@material-ui/pickers';
import DateFnsUtils from '@date-io/date-fns';

function CustomDatePicker() {
  // 初始状态设为null,而非默认的当前日期
  const [selectedDate, setSelectedDate] = useState(null);

  const handleDateChange = (date) => {
    setSelectedDate(date);
  };

  return (
    <MuiPickersUtilsProvider utils={DateFnsUtils}>
      <DatePicker
        label="选择日期"
        value={selectedDate}
        onChange={handleDateChange}
        format="yyyy-MM-dd"
        // 若使用非受控模式,需显式设置defaultValue为null
        // defaultValue={null}
      />
    </MuiPickersUtilsProvider>
  );
}

export default CustomDatePicker;

类组件

import React, { Component } from 'react';
import DatePicker from '@material-ui/pickers/DatePicker';
import { MuiPickersUtilsProvider } from '@material-ui/pickers';
import DateFnsUtils from '@date-io/date-fns';

class CustomDatePicker extends Component {
  state = {
    selectedDate: null // 初始化为null
  };

  handleDateChange = (date) => {
    this.setState({ selectedDate: date });
  };

  render() {
    return (
      <MuiPickersUtilsProvider utils={DateFnsUtils}>
        <DatePicker
          label="选择日期"
          value={this.state.selectedDate}
          onChange={this.handleDateChange}
          format="yyyy-MM-dd"
        />
      </MuiPickersUtilsProvider>
    );
  }
}

export default CustomDatePicker;

注意事项

  • 如果使用非受控组件(不绑定value和onChange),必须显式设置defaultValue={null},否则组件仍会默认选中今日。
  • 确保没有在初始化状态时将selectedDate设为new Date(),这是导致默认选中今日的常见原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:27:18