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

React JSX实现的计时器点击答题按钮时重置问题如何解决

故障根因

你代码中负责初始化题目列表、计时器的useEffect未指定依赖数组,根据React Hooks规则,无依赖数组的useEffect会在每一次组件重渲染时都执行。
当你点击答案选项时,会更新current、result等状态触发组件重渲染,此时该useEffect会再次执行,重新计算赋值timeLimit,直接导致计时器被重置,问题和fetch请求无关,fetch只在组件挂载时执行一次。

修复方案
  • 给第二个useEffect添加依赖数组[executedFetch, quiz],确保只有在fetch拿到新的quiz数据时才会执行初始化逻辑,不会在每次点击答案重渲染时重复触发计时器赋值
  • 可选优化:可以删除冗余的executedFetch、executedSet状态,直接判断quiz是否有值即可,简化代码逻辑
  • 额外注意:你代码中引用的handleCopy方法未定义,需要补充实现否则会触发运行时报错
修正后的关键代码片段
// 仅在executedFetch或quiz变更时执行初始化逻辑
useEffect(() => {
  if (executedFetch){
    setQuestionList(quiz.questions)
    setTimeLimit((quiz.timeLimit * 1000) + Date.now())
    setStartTime(Date.now())
    setExecutedSet(true)
  }
}, [executedFetch, quiz]) // 新增依赖数组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:15:07