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

MUI 5 MobileDatePicker如何禁用年份切换功能?

解决@mui/x-date-pickers ^5.0.0-beta.7版本禁用年份切换的方法

针对你使用的@mui/x-date-pickers ^5.0.0-beta.7版本,要禁用MobileDatePicker的年份切换、阻止进入年份选择视图,有两种可行方案:

方案一:通过views props限制允许的视图层级

默认情况下,MobileDatePicker允许用户在year、month、day三个视图间切换。你可以通过views props指定仅允许month和day视图,直接屏蔽年份视图的访问入口:

import { useState } from 'react';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { MobileDatePicker } from '@mui/x-date-pickers/MobileDatePicker';
import AdapterDateFns from '@mui/x-date-pickers/AdapterDateFns';
import TextField from '@mui/material/TextField';

export default function NoYearSwitchDatePicker() {
  const [selectedDate, setSelectedDate] = useState(null);

  return (
    <LocalizationProvider dateAdapter={AdapterDateFns}>
      <MobileDatePicker
        label="选择日期"
        value={selectedDate}
        onChange={(newDate) => setSelectedDate(newDate)}
        renderInput={(params) => <TextField {...params} />}
        // 仅启用月、日视图,禁用年份视图
        views={['month', 'day']}
      />
    </LocalizationProvider>
  );
}

方案二:自定义Toolbar隐藏年份切换功能

如果你需要保留年份显示,但禁止用户点击切换到年份视图,可以自定义组件的Toolbar,将可点击的年份替换为静态文本:

import { useState } from 'react';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { MobileDatePicker, MobileDatePickerToolbar } from '@mui/x-date-pickers/MobileDatePicker';
import AdapterDateFns from '@mui/x-date-pickers/AdapterDateFns';
import TextField from '@mui/material/TextField';
import { Typography } from '@mui/material';

// 自定义Toolbar,移除年份点击切换功能
const CustomDatePickerToolbar = (props) => {
  const { date } = props;
  return (
    <MobileDatePickerToolbar
      {...props}
      title={
        <Typography variant="h6">
          {date.getFullYear()}年 {date.getMonth() + 1}月
        </Typography>
      }
    />
  );
};

export default function StaticYearDatePicker() {
  const [selectedDate, setSelectedDate] = useState(new Date());

  return (
    <LocalizationProvider dateAdapter={AdapterDateFns}>
      <MobileDatePicker
        label="选择日期"
        value={selectedDate}
        onChange={(newDate) => setSelectedDate(newDate)}
        renderInput={(params) => <TextField {...params} />}
        components={{ Toolbar: CustomDatePickerToolbar }}
      />
    </LocalizationProvider>
  );
}

注意:由于你使用的是beta版本,部分API可能与正式版存在差异,上述代码基于^5.0.0-beta.7版本的特性编写,可直接测试使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:50:23