我想在 Material UI 中使用 DatePicker,并且我希望它始终显示在模板中,但 DatePicker 的默认设置是聚焦文本字段并显示对话框。
是否可以在不使用对话框和聚焦文本字段的情况下显示 DatePicker。让它总是在渲染展示中显示 DatePicker 组件?
我想在 Material UI 中使用 DatePicker,并且我希望它始终显示在模板中,但 DatePicker 的默认设置是聚焦文本字段并显示对话框。
是否可以在不使用对话框和聚焦文本字段的情况下显示 DatePicker。让它总是在渲染展示中显示 DatePicker 组件?
【material-ui v0.x的解决方案】
如果我理解正确,您希望在没有任何对话框和输入的情况下显示Calendar组件DatePicker。如果是这种情况,您可以Calendar像这样导入内部组件:
import Calendar from 'material-ui/DatePicker/Calendar';
然后渲染,例如:
<Calendar
autoOk={false}
cancelLabel={false}
firstDayOfWeek={1}
onTouchTapDay={this.handleTouchTapDay}
mode={'portrait'}
open={true}
ref="calendar"
/>
还有一些其他props可用于Calendar,我没有在这个例子中使用过。你可以发现他们在这里的源代码Calendar:
这是我在渲染后得到的:
【material-ui 4x的解决方案】
在 v4 日期选择器中有一个单独的包, @material-ui/pickers
这是关于此的文档。
代码几乎相同,只是对于新的选择器,需要用MuiPickersUtilsProvider. 下面是一个最简单的例子:
import React from "react";
import { render } from "react-dom";
import DateFnsUtils from "@date-io/date-fns";
import { MuiPickersUtilsProvider, Calendar } from "@material-ui/pickers";
render(
<MuiPickersUtilsProvider utils={DateFnsUtils}>
<Calendar date={new Date()}/>
</MuiPickersUtilsProvider>,
document.querySelector("#root")
);
对的,这是可能的:
<div>
<DatePicker hintText="Portrait Inline Dialog" container="inline" />
</div>
用于控制输入字段聚焦时日期选择器的显示方式。对话框(默认)将 DatePicker 显示为带有模式的对话框。inline 在输入字段下方显示 DatePicker(类似于自动完成)。