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

news/2024/7/15 20:30:09 标签: react.js, javascript, 前端

需求:实现一个定时器计数器,每秒自动+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.niftyadmin.cn/n/5162337.html

相关文章

搅拌站远程控制系统 | 集中生产 集中调度 集中控制

上海思伟远程控制 集中生产 集中调度 集中管理 安全 整洁 高效 稳定生产 超距离远程控制 无延迟流畅生产 支持一人控制两条生产线 单机双机灵活切换 年省人力成本数十万 绿色生产 远程控制并未降低生产效率 没了噪音&#xff0c;操控更舒适 信息化与自动化的完美结…

geoserver发布同一字段的多值渲染

Geoserver之同一字段的多值渲染 有时候我们需要对一个shp的某一字段值中的不同值进行区分展示&#xff0c;但是一般的渲染都是按照统一图层展示的&#xff0c;因此为了更好的效果&#xff0c;我们选择使用uDig等工具处理。 文章目录 Geoserver之同一字段的多值渲染前言一共是分…

【MTK平台】【Bluetooth】重启测试机,蓝牙无法自动开启

问题现象: 开启蓝牙后,重启手机后,发现蓝牙无法自动开启 分析: 查看log可以知道,手机重启后会报如下错误,可以知道BluetoothManagerService出现isAdieFail错误 10-27 16:31:07.056505 1555 1555 E BluetoothManagerService: Exception 10-27 16:31:07.056544 1555…

Sass 最基础的语法

把每个点最简单的部分记录一下&#xff0c;方便自己查找 官方文档链接 Sass 笔记 1. & 父选择器&#xff0c;编译后为父选择器2. : 嵌套属性3. $ 变量3.1 数据类型3.2 变量赋值3.3. 数组3.4. map 4. 算数运算符5. #{}插值语法5.1 可以在选择器或属性名中使用变量5.2 将有引…

竞赛选题 深度学习火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 图像识别 火车票识别系统 该项目较为新颖&#xff0c;适…

Object.defineProperty基本用法

一、基本使用 Object.defineProperty是JavaScript中的一个方法&#xff0c;它用于在一个对象上定义一个新的属性或修改已经存在的属性。 使用Object.defineProperty&#xff0c;我们可以通过以下方式定义一个属性&#xff1a; Object.defineProperty(obj, prop, descriptor)…

Java并发工具-4-并发框架(ExecutorForkJoin)

一 Executor 并发框架介绍 1 整体结构介绍 executor [ɪɡˈzekjətə(r)] 执行者 execute [ˈeksɪkjuːt] 执行 从 JDK 1.5 开始&#xff0c;java 中将工作单元和执行机制做了分离&#xff0c;于是 Executor 并行框架出现。 什么是工作单元&#xff08;或称为任务&#xff…

【 Docker: 数据卷挂载】

背景 Docker只提供了容器运行的必备依赖&#xff0c;但是一些编辑等操作的依赖是不支持的&#xff0c;如vi操作容器内部文件、将静态资源拷贝到容器内来等。 docker pull nginx docker run -d -p 81:80 --namemynginx -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/dock…