如何使用 React 发送特定时间的 unix 时间戳?

问题描述 投票:0回答:0

在 React 18.2.0 中,我试图在 HTTP 请求中发送今天凌晨 00 点(如果需要 GMT +03.00 时区)的时间戳数据。为此,我将时间戳数据保存在名为

unixDate
的状态中。然后,我将当前时间戳更改为 00.00 AM 并使用
getTasks()
函数发送时间戳数据函数。我还有两个使用
getTasks()
的 useEffect 函数。其中一个只是使用 getTasks() 函数,而另一个是通过保留的数字将时间戳更改为另一天(
dateCounter
状态保持整数)并调用 getTasks():

const [unixDate, setUnixDate] = useState(String(Math.floor(Date.now())));

  useEffect(() => {
    const today = new Date();
    today.setHours(0, 0, 0, 0);
    setUnixDate(String(Math.floor(today)));
    getTasks();
  }, []);

useEffect(() => {
    getTasks();
  }, [handleAddTask])

useEffect(() => {
    const today = new Date();
    let tomorrow = new Date();
    tomorrow.setDate(today.getDate() + dateCounter)
    tomorrow.setHours(0, 0, 0, 0);
    setUnixDate(String(Math.floor(tomorrow / 1000)));
    getTasks();
  }, [dateCounter])

async function getTasks() {
    const data = await PostService.getStudentTasks(unixDate);
    setTask(data);
  }

当我运行这段代码时,React 给我“React Hook useEffect 缺少依赖项:‘getTasks’。要么包含它,要么删除依赖项数组”,警告所有 useEffects,不会改变 00.00 的

unixDate
状态AM 并在页面加载时运行所有 useEffect 代码部分(
handleAddTask
dateCounter 
useEffects 不应运行)。

当我改变

dateCounter
状态时,
unixDate
状态在00.00 AM改变之前的日期。

我正在尝试解决这个问题,改变了 getTasks() 函数:

async function getTasks(unixDate) {
    const data = await PostService.getStudentTasks(unixDate);
    setTask(data);
  }

警告消失了,但这次 getTasks() 函数使用本地 unixDate 变量并发送

undefined
unixDate.

我该如何解决这些问题?

javascript reactjs frontend timestamp unix-timestamp
© www.soinside.com 2019 - 2024. All rights reserved.