MUI X Date Picker问题:设置MMM格式占位符却显示MMMM
解决方案
在@mui/x-date-pickers v6中,日期选择器的占位符默认会自动将格式字符串中的缩写模式转换为全称(比如MMM转为MMMM),这就是你看到占位符显示MMMM DD, YYYY的原因。要覆盖这个默认行为,必须通过renderInput属性自定义输入框组件,手动指定占位符内容。
具体实现代码如下:
import { useState } from 'react'; import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider'; import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; import { DatePicker } from '@mui/x-date-pickers/DatePicker'; import TextField from '@mui/material/TextField'; function CustomDatePicker() { const [selectedDate, setSelectedDate] = useState(null); return ( <LocalizationProvider dateAdapter={AdapterDateFns}> <DatePicker label="选择日期" value={selectedDate} onChange={(newDate) => setSelectedDate(newDate)} format="MMM DD, YYYY" renderInput={(params) => ( // 在这里手动设置占位符,替换默认生成的内容 <TextField {...params} placeholder="Jan 01, 2024" /> )} /> </LocalizationProvider> ); } export default CustomDatePicker;
如果希望占位符直接显示格式字符串MMM DD, YYYY,只需把placeholder的值改成对应的字符串即可。
之前修改子组件占位符无效的原因是:DatePicker内部会自动根据格式生成占位符并覆盖传入的默认值,只有通过renderInput显式自定义TextField并设置占位符,才能完全替换默认的占位符逻辑。
内容的提问来源于stack exchange,提问作者pseudoku
相关产品推荐
相关产品推荐

