You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React使用useState切换日期时报错getTime is not a function如何解决

问题原因

Date对象的setDate()方法返回值为修改后日期对应的毫秒级时间戳(数字类型),而非修改后的Date实例。你的代码中错误将setDate()的返回值重新赋值给了nextDate变量,导致第一次调用setDay后,currentDay状态从原本的Date对象变成了数字类型的时间戳。

第二次点击触发nextDay时,你尝试调用数字类型currentDay的getTime()方法,数字本身没有这个方法,因此抛出currentDay.getTime is not a function错误。

修复方案

修改app.js中的nextDay函数,不要接收setDate()的返回值,直接将修改后的Date实例传入setDay即可,修改后代码如下:

import React, { useState } from 'react';
import Header from '../header/header';
import Day from '../day/day'
import {BrowserRouter as Router} from 'react-router-dom';
import './app.css';

export default function App() {
  const [currentDay, setDay] = useState(new Date());
  console.log(currentDay)
  function nextDay() {
    console.log("next clicked");
    let nextDate = new Date(currentDay.getTime());
    // 直接调用setDate修改新创建的Date实例,不要重新赋值给nextDate
    nextDate.setDate(nextDate.getDate() + 1);
    setDay(nextDate);
  }
  return (
    <>
      <Router>
        <Header/>
      </Router>
      <Day 
        date={currentDay}
        nextDay={nextDay}
      />
    </>
  )
}

day.js组件无需修改即可正常运行。

内容的提问来源于stack exchange,提问作者Naur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:54:03