【问题标题】:react-datepicker fails with moment and new Datereact-datepicker 因时刻和新日期而失败
【发布时间】:2018-09-23 08:34:49
【问题描述】:

我正在尝试使用momentreact-datepicker 组件中设置minDate 属性:

if(this.props.minDate){
      console.log('date:' + moment(this.props.minDate)); //1517436000000

      return <DatePicker

       minDate={ new moment(this.props.minDate)} 
         selected={this.state.startDate}
         onChange={this.handleChange}
         disabled = {this.props.disabled}
     />

new Date:

console.log('new date:' + new Date(this.props.minDate)); // Thu Feb 01 2018 02:00:00 GMT+0200
return <DatePicker

       minDate={ new Date(this.props.minDate)} 
         selected={this.state.startDate}
         onChange={this.handleChange}
         disabled = {this.props.disabled}
     />

我的 minDate 字符串 - "2011-10-01"。 结果仍然是当天,控制台中没有错误,感谢您的帮助。

【问题讨论】:

标签: javascript reactjs datepicker momentjs


【解决方案1】:

我认为您必须为此提供价值,因为 minDate 和 maxDate 用于验证目的。 仅当给定值或当前日期小于 min Date 时,minDate 才会成为结果值

class Example extends React.Component {
  constructor (props) {
    super(props)
    this.minDate = new moment(props.minDate)
    this.state = {
      startDate: props.minDate
    };
    this.handleChange = this.handleChange.bind(this);
  }

  handleChange(date) {
    this.setState({
      startDate: date
    });
  }

  render() {
    return <DatePicker
     selected={this.state.startDate}
     onChange={this.handleChange}
     minDate={this.minDate}
     value={this.props.startDate}
   />;
  }
}

【讨论】:

  • 我的问题是selected 属性覆盖了minDate 属性。
  • 我添加了一个例子,请检查它是否有效。这就是我的意思是我们必须将值传递给选择的值。
【解决方案2】:

在我看来,当您将数据传递给 minDate 道具时,您不需要新的时刻实例。你正在这样做minDate={ new moment(this.props.minDate)}

React-datepicker 已经在内部使用 moment 来操作数据对象,所以我认为你应该在将关键字 new 传递给 minDate 属性时将其删除。

【讨论】:

  • 我的问题是selected 属性覆盖了minDate 属性。
【解决方案3】:

我自己想出了这个,似乎如果设置了selected 属性,它将显示而不是minDate 属性。

【讨论】:

    猜你喜欢
    • 2019-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2021-07-10
    • 2013-01-06
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多