我使用DateRangePicker来获取日期范围,并将日期附加到api以获取最新日期数据。
如下面的代码所示,我可以在EventHandler函数外部获取更新状态,但不能在它内部获取更新状态。我得到的是第一次选择的相同日期。
import React, { useState } from "react";
import DateRangePicker from "react-bootstrap-daterangepicker";
import "bootstrap-daterangepicker/daterangepicker.css";
import moment from "moment";
import DataProvider from "context/DataContext";
import ApiService from "services/api";
export default function DatePicker() {
const [fromDate, setFromDate] = useState(new Date());
const [toDate, setToDate] = useState(new Date());
const range = {
Today: [moment(), moment()],
Yesterday: [moment().subtract(1, "days"), moment().subtract(1, "days")],
"Last 7 Days": [moment().subtract(6, "days"), moment()],
"Last 30 Days": [moment().subtract(29, "days"), moment()],
"This Month": [moment().startOf("month"), moment().endOf("month")],
"Last Month": [
moment().subtract(1, "month").startOf("month"),
moment().subtract(1, "month").endOf("month"),
],
"Last Year": [
moment().subtract(1, "year").startOf("year"),
moment().subtract(1, "year").endOf("year"),
],
};
var startdate = moment(fromDate).format("yyyy-MM-DD");
var enddate = moment(toDate).format("yyyy-MM-DD");
console.log(startdate);
const handleEvent = (event, picker) => {
setFromDate(picker.startDate._d);
setToDate(picker.endDate._d);
console.log(startdate);
var requestData = {
metrics: ["views"],
project_id: "abc",
date_range: { start_at: fromDate, end_at: toDate },
};
ApiService.create({ requestData }).then((onSuccess) => {
console.log(onSuccess);
});
};
return (
<DateRangePicker
ranges={range}
alwaysShowCalendars={false}
onEvent={handleEvent}
>
<button>
{moment(fromDate).format("ll")} to {moment(toDate).format("ll")}
</button>
</DateRangePicker>
);
}发布于 2021-09-14 15:30:26
在requestData对象中,您应该将fromDate更改为picker.startDate._d,在另一个对象toDate->endDate._d上也是如此
https://stackoverflow.com/questions/69180194
复制相似问题