ReactJS 17.2结合MUI v4,适配需求的日期选择器求推荐
适配Material UI 4的日期选择器推荐
针对你的场景,最适配Material UI 4 + React 17.2的日期选择器是**@material-ui/pickers**——这是MUI官方配套的日期组件库,完美兼容你的技术栈,能搞定点击选日历、手动输入、自动格式化这几个需求。
为什么选它?
- 既支持点击日历面板选日期,也允许手动输入任意常见日期格式
- 可以通过日期处理库配置自定义输出格式,输入后自动转成你要的
dd-mmm-yyyy样式 - 完全贴合Material UI 4的设计风格,不用额外调整样式
具体实现(以date-fns为例)
1. 安装依赖
@material-ui/pickers需要搭配日期处理库,推荐轻量的date-fns(2.x版本适配React 17):
npm install @material-ui/pickers date-fns@2.x
2. 全局配置适配器
在项目根组件(比如App.js)里注入日期工具的适配器,还要配置英文 locale 来支持Mar、Apr这类月份缩写:
import { MuiPickersUtilsProvider } from '@material-ui/pickers'; import DateFnsUtils from '@material-ui/pickers/adapter/date-fns'; import { enGB } from 'date-fns/locale'; function App() { return ( <MuiPickersUtilsProvider utils={DateFnsUtils} locale={enGB}> {/* 你的业务组件都放在这里面 */} </MuiPickersUtilsProvider> ); }
3. 编写日期选择器组件
直接用DatePicker组件,配置好格式和允许手动输入:
import React, { useState } from 'react'; import { DatePicker } from '@material-ui/pickers'; function MyDatePicker() { const [selectedDate, setSelectedDate] = useState(null); return ( <DatePicker label="选择日期" value={selectedDate} onChange={(date) => setSelectedDate(date)} format="dd-MMM-yyyy" // 这里指定你要的输出格式 inputVariant="outlined" // 匹配MUI4的输入框样式 allowKeyboardEntry // 开启手动输入功能 /> ); }
额外说明
- 手动输入时,组件会自动识别yyyy/mm/dd、mm/dd/yyyy这类常见格式,自动转换成
dd-mmm-yyyy - 如果需要中文月份(比如24-三月-2023),把
enGB换成zhCN,记得导入date-fns/locale/zh-CN - 用这个组件完全能替代你之前的原生
type="date"输入框,解决原生组件格式兼容差的问题
内容的提问来源于stack exchange,提问作者kush a
相关产品推荐
相关产品推荐

