【问题标题】:How to set value of the DatePicker in React如何在 React 中设置 DatePicker 的值
【发布时间】:2020-05-30 18:24:15
【问题描述】:

我想在单击设置日期按钮时设置DatePicker 值的日期,但我收到此错误RangeError Invalid time value

import React from "react";
import "./styles.css";
import DatePicker from "react-datepicker";
export default function App() {
  const my_date = "26/05/2020";
  var [edit_check_date, set_edit_check_date] = React.useState(new Date());

  const set_date = () => {
    set_edit_check_date(my_date);
  };
  return (
    <div className="App">
      <input type="submit" value="set date" onClick={set_date} />
      <DatePicker
        dateFormat="dd/MM/yyyy"
        className="form-control"
        selected={edit_check_date}
        onChange={date => set_edit_check_date(date)}
      />
    </div>
  );
}

【问题讨论】:

  • 你没有告诉我们你为 DatePicker 使用了哪个库?

标签: javascript reactjs datepicker


【解决方案1】:

我准备了一个使用react-datepicker 的示例。除了显示alert 来查看更改的日期外,我不会更改您的任何代码。这是完整的示例:

import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
import React, {useState} from "react";

export default function DatePickerEx() {
    const [edit_check_date, set_edit_check_date] = useState(new Date());

    const open_modal = record => {
        /* record.check_date value is '25/05/2020' */
        set_edit_check_date(record.check_date); // This is making the error
    };

    function clickHandler(event) {
        const my_date = new Date( "2020-05-26");
        set_edit_check_date(my_date);
    }

    return (
        <div>
            <DatePicker
                dateFormat="dd/MM/yyyy"
                className="form-control"
                selected={edit_check_date}
                onChange={date => {
                    set_edit_check_date(date);
                    alert(date);
                }}
            />
            <button onClick={clickHandler}>Set 2020-05-26</button>
        </div>
    );
}

Here is the Code Sandbox

更新

function clickHandler(event) {
    let date = "26/05/2020";
    let my_date = new Date(date.split("/").reverse().join("-"));
    console.log(date);
    console.log(my_date);
    set_edit_check_date(my_date);
}

【讨论】:

  • 我的问题是我想从记录中设置日期的值,而不是从日历框中选择它
  • 嗨,我已经更新了我的答案以及我提供的答案code sand box。请检查一下
  • 谢谢,但由于我的日期格式是这种格式DD/MM/YYYY 并且在尝试set_edit_check_date('26/05/2020 时出错);`
  • 您已将格式转换为接受 Date 对象的格式
  • 请你告诉我如何做到这一点,我尝试使用moment.js 更改它但没有用
猜你喜欢
  • 2020-11-08
  • 2019-09-11
  • 2020-03-08
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-17
  • 2021-08-16
相关资源
最近更新 更多