首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法访问handleEvent函数| React挂钩中的已更新状态

无法访问handleEvent函数| React挂钩中的已更新状态
EN

Stack Overflow用户
提问于 2021-09-14 15:01:28
回答 1查看 36关注 0票数 0

我使用DateRangePicker来获取日期范围,并将日期附加到api以获取最新日期数据。

如下面的代码所示,我可以在EventHandler函数外部获取更新状态,但不能在它内部获取更新状态。我得到的是第一次选择的相同日期。

代码语言:javascript
运行
复制
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>
  );
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-14 15:30:26

在requestData对象中,您应该将fromDate更改为picker.startDate._d,在另一个对象toDate->endDate._d上也是如此

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69180194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档