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

使用React Hooks重构含硬编码初始状态的组件时如何设置初始状态

代码问题说明

你目前的代码混用了类组件的状态写法和Hooks写法,存在两处核心错误:

  • 函数组件没有this指向,也不能直接给React.state赋值,这是类组件专属的状态定义逻辑
  • 声明useState(0)时的初始值设置错误,你需要存储的是计时器对象数组,而非数字0,且声明后的状态变量后续没有被使用

修正后完整代码

import { useState } from 'react';
// 注意提前安装uuid依赖:npm install uuid
import { v4 as UUIDv4 } from 'uuid';

const TimersDashboard = () => {
  // 直接将硬编码的初始数组传入useState作为初始值
  const [timers, setTimers] = useState([
    {
      id: UUIDv4(),
      activity: 'Testing activity',
      description: 'Lorem ipsum kraf maga',
      elapsed: '0',
      runningSince: Date.now(),
    },
    {
      id: UUIDv4(),
      activity: 'Next activity',
      description: 'Lorem ipsum kung fu',
      elapsed: '0',
      runningSince: Date.now(),
    }
  ]);

  return (
    <div className='ui three column centered grid'>
      <div className='column'>
        <TimersList
          timers={timers}
        />
        <NewTimerTool
          isOpen={false}
        />
      </div>    
    </div>
  );
}

补充说明

后续如果需要修改计时器列表,直接调用setTimers传入新的数组即可,Hooks会自动触发组件重渲染更新视图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:00:02