Material UI:如何在 DatePicker 之外使用 DatePickerDialog?

Posted

技术标签:

【中文标题】Material UI:如何在 DatePicker 之外使用 DatePickerDialog?【英文标题】:Material UI: How to use DatePickerDialog outside of DatePicker? 【发布时间】:2016-10-30 08:25:25 【问题描述】:

是否可以在没有DatePicker 的情况下使用DatePickerDialog?我想这样做的原因是,与DatePicker 中的TextField 相比,我希望更多地控制现有数据的格式。

我试过了,这就是我得到的,所有的日期都是乱码:

这是我的代码:

  <MuiThemeProvider>
    <div>
      <span onClick=this.handleClick>Open</span>
      <DatePickerDialog
        ref="dialogWindow"
        container="inline"
        mode="landscape"
      />
    </div>
  </MuiThemeProvider>

请注意,我将其嵌入到一个已经存在的没有反应的应用程序中,这就是我将MuiThemeProvider 放在那里的原因。

另一个考虑因素是能够构建一个衍生品DateTimePicker,它将日期和时间选择器的部分内容整合到无缝体验中。

关于如何在没有 DatePicker 的情况下使用 DatePickerDialog 有什么想法吗?

【问题讨论】:

【参考方案1】:

如何隐藏文本字段组件并使用 ref 显示对话框,然后使用 onChange 回调获取选定的值?

openDatePicker()
  this.refs.datepicker.openDialog()


render()
  return (
    <div>
      <RaisedButton onTouchTap=this.openDatePicker label='open date picker' />
      <DatePicker textFieldStyle= display: 'none'  ref='datepicker' />
    </div>
  )

【讨论】:

【参考方案2】:

tl;dr:您需要将firstDayOfWeek 提供给&lt;DatePickerDialog&gt;,否则会呈现损坏状态。


我遇到了与您相同的布局问题,解决方案只是指定更多道具。我还遇到了一个问题,即单击对话框上的任意位置会导致它关闭(即年和月控件不起作用)。

我在 material-ui 源代码中四处挖掘以查看 &lt;DatePicker&gt; 如何管理 &lt;DatePickerDialog&gt;,并注意到 &lt;DatePicker&gt; 总是为 &lt;DatePickerDialog&gt; 接受的每个道具计算值。

我还看到了如何管理打开/关闭。

这里有一些相关的代码 sn-ps 展示了如何让它工作:

openDatePicker = (event) => 
    this.dueDatePicker.show();
;


closeDatePicker = () => 
    this.dueDatePicker.dismiss();
;

render() 
    return (
        <DatePickerDialog
            ref=(e) => this.dueDatePicker = e
            initialDate=this.state.date
            firstDayOfWeek=0
            mode="portrait"
        />
    );

P.S.:我觉得很有趣的是,日期选择社区仍然有这种将日期选择器与文本框结合的癖好。例如,参见 4 年前的 this very similar question of mine re: jQuery。

【讨论】:

Tom,我认为“恋物癖”通常与让 DatePicker 允许键盘访问有关,这对于以键盘为中心的 UI 和可访问性来说通常非常好。

以上是关于Material UI:如何在 DatePicker 之外使用 DatePickerDialog?的主要内容,如果未能解决你的问题,请参考以下文章

我如何将 Material-UI 托管样式应用于非 Material-ui、非反应元素?

如何在 Material-UI 中使用 Box 组件覆盖按钮?

如何在样式化组件中访问 Material-ui 的主题

如何在 Material-UI 中使按钮居中

数据变化时如何在ReactJS中刷新Material-Table(Material-ui)组件

如何使用 Material-UI 创建 onSubmit