当前位置: 首页 > news >正文

React:实现一个定时器计数器,每秒自动+1

需求:实现一个定时器计数器,每秒自动+1

import React, { useState, useEffect } from "react";

export default function App() {
  let [count, setCount] = useState(0);

  useEffect(() => {
    let timer = setInterval(() => {
      setCount(count + 1);
    }, 1000);

    return () => {
      clearInterval(timer);
    };
  }, []);

  return <div>{count}</div>;
}

以上写法有一个问题,页面会永远停留在数字1,并不会发生变化

正确的写法如下

import React, { useState, useEffect } from "react";

export default function App() {
  let [count, setCount] = useState(0);

  useEffect(() => {
    let timer = setInterval(() => {
      setCount((preValue) => {
        return preValue + 1;
      });
    }, 1000);

    return () => {
      clearInterval(timer);
    };
  }, []);

  return <div>{count}</div>;
}

方法签名

setCount(value)

setCount(preValue=>newValue)

参考文章

  1. 「React」React Hooks与setInterval的踩坑问题总结
  2. https://react.docschina.org/reference/react/useState

相关文章:

  • 大语言模型比武
  • 初步了解OSG智能指针
  • 传感器融合是什么?及其类型和应用
  • react typescript @别名的使用
  • Django框架的推导
  • AI 绘画 | Stable Diffusion 高清修复、细节优化
  • ArcGIS属性表导出时中文为乱码的解决办法
  • Microsoft Dynamics 365 CE 扩展定制 - 7. 安全
  • 远程运维用什么软件?可以保障更安全?
  • 如何选择SVM中最佳的【核函数】
  • ffmpeg的使用
  • 【Web】在前端中,HTML<meta>标签
  • Chrome 插件开发 V3版本 跨域处理
  • 案例研究|腾讯音乐娱乐集团与JumpServer共探安全运维审计解决方案
  • 【离散数学】图论
  • IDEA 函数下边出现红色的波浪线,提示报错
  • 中间件redis的使用
  • nginx upstream健康检测
  • Hello Vue!
  • sqli 靶场 Level23-Level30 wp
  • 上海徐汇 “家 + 书屋”,创新服务广大家庭
  • 建筑瞭望|从黄浦江畔趸船改造看航运设施的升级与利用
  • 竞彩湃|英超欧冠悬念持续,纽卡斯尔诺丁汉能否拿分?
  • 浙江一教师被指殴打并威胁小学生,教育局通报涉事人被行拘
  • 纪念|脖子上挂着红领巾的陈逸飞
  • 南宁一学校发生伤害案件,警方通报:嫌疑人死亡,2人受伤