【发布时间】:2021-09-09 12:32:52
【问题描述】:
我在尝试将函数传递到日历组件时收到一条错误消息 - 不知道我打算如何调用这个特定的函数来更改正在获取的数据?
这是日历组件,
import React, { useState } from "react";
import DatePicker from "react-datepicker";
import "react-datepicker/dist/react-datepicker.css";
export default function DateRange({startDate,endDate,handleChange}) {
return (
<DatePicker
selectsRange={true}
startDate={startDate}
endDate={endDate}
onChange={handleChange}
withPortal
/>
);
};
这是具有我想要处理更改功能的文件,
import useSWR from "swr";
import { useMemo, useState, useEffect } from "react";
import { apiRequest } from "../../../util/util";
import { format } from "date-fns";
import groupBy from "lodash/groupBy";
// import get from "lodash/get";
export default function useAnalytics() {
d.setMonth(d.getMonth() - 3);
const [isLoading, setIsLoading] = useState(false);
const [dateRange, setDateRange] = useState([d.getTime(), Date.now()]);
const [startDate, endDate] = dateRange;
const handleChange = (e) => {
setDateRange(e)
const { data: sentimentData } = useSWR(
`xx/xx/xxx-xx-xx?startTime=${startDate}&endTime=${endDate}`,
fetchSentiment
);
return sentimentData
}
const { data: sentimentData } = useSWR(
`xx/xx/xx-xx-xx?startTime=${startDate}&endTime=${endDate}`,
fetchSentiment
);
return {
sentimentData,
handleChange,
setDateRange,
startDate,
endDate,
};
}
这个get在这里传递给另一个函数,
import useAnalytics from './useAnalytics.js'
export default function Analytics() {
const {
sentimentData,
handleChange,
startDate,
endDate
} = useAnalytics();
return (
<div className="relative">
<div>
Calendar
<DateRange handleChange = {handleChange} startDate = {startDate} endDate = {endDate} />
</div>
....
);
}
当它调用该函数时,我收到一个无效的钩子调用错误。
我希望能够更改日期,然后发送查询以更改父函数中可用的数据。不确定当前的设置哪里出错了?
更新
下面的效果非常好!现在用于查询的日期格式错误,
目前正在尝试此代码,
const handleChange = e => {
setDateRange(e);
setDateRange(Date(dateRange[0]).getTime(),Date(dateRange[1].getTime()))
};
这不起作用,因为函数 getTime 不会将值转换为任何值。
这是从日历返回的值,
console.log("type of data: ",typeof startDate,"start Date: ", startDate,"EndDate: ", endDate)
type of data: object start Date: Mon Aug 09 2021 00:00:00 GMT+1000 (Australian Eastern Standard Time) EndDate: Wed Aug 18 2021 00:00:00 GMT+1000 (Australian Eastern Standard Time)
【问题讨论】:
-
这是
useSWR,你从哪里得到useAnalytics中的startDate和endDate? -
StartDate 和 endDate 我已经编辑掉了,但是在上面
-
useSWR是一个next.js函数来执行fetch(fetch函数正常工作)
-
我把我的答案写在下面,看看有没有帮助。
标签: javascript reactjs