当前位置: 首页 > 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
http://www.dtcms.com/a/3747.html

相关文章:

  • 大语言模型比武
  • 初步了解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
  • xshell是什么软件,1000字让你完全了解xshell
  • flink1.15.2 报错 processElement_split
  • Docker学习——④
  • yuv420并转为bgr
  • 【编程语言发展史】Unity开发语言的历史发展
  • ST 任意内核 移植freertos系统
  • 项目实战:中央控制器实现(2)-优化Controller,将共性动作抽取到中央控制器
  • Redis系列-Redis集群模式【8】
  • Qt 4.8.6 的下载与安装
  • VS2010配置gdal1.10.0 gdal1.10.1编译