首页 > 其他分享 > React:实现一个定时器计数器,每秒自动+1

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

时间:2023-12-04 10:06:34浏览次数:39  
标签:count 定时器 return setCount React 计数器 useState useEffect

需求:实现一个定时器计数器,每秒自动+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

标签:count,定时器,return,setCount,React,计数器,useState,useEffect
From: https://blog.51cto.com/mouday/8673405

相关文章

  • 一篇随笔学习React18组件通信与插槽
    了解什么是jsx->https://www.cnblogs.com/senior-shef/p/17872695.html一、了解props1、什么是propsReact支持两种组件,DOM组件和React组件。DOM组件指的是所有的HTML和SVG标签。比如说,如果我们想要使用标签,在React中,可以设置src和alt等属性。这些属性与纯HTML写法相同。在Rea......
  • 【React工作记录九】switch对按钮进行判断操作
    目录前言 导语代码部分总结前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷 导语今天同事找到我......
  • 基本定时器TIM6实现精确延时
    1、基本定时器的特点(1)、16位自动重装载累加计数器(2)、16位可编程(可实时修改)预分频器,用于对输入的时钟按系数为1~65536之间的任意数值!!!注意基本定时器只有向上计数模式,不要被框图和数据手册上的一些描述误导,基本定时器寄存器中根本没有计数模式的配置相关位。2、基本定时器的配......
  • React 整洁代码的 10 个最佳实践(译)
    作者:大家的林语冰链接:https://www.zhihu.com/question/36516604/answer/3279585231来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。React整洁代码的10个最佳实践(译)免责声明本文属于是语冰的直男翻译了属于是,仅供粉丝参考,英文原味版请临幸Top1......
  • js:React中使用classnames实现按照条件将类名连接起来
    参考文档https://www.npmjs.com/package/classnameshttps://github.com/JedWatson/classnames安装npminstallclassnames示例importclassNamesfrom"classnames";//字符串合并console.log(classNames("foo","bar"));//foobar//对象合并c......
  • React项目报错:Element type is invalid: expected a string可能的原因
    React项目报错:Elementtypeisinvalid:expectedastring 起因:用了屎一样的ReactAntd组件库,坑太多实在用不下去了,代码不变直接改成Tdesign,于是就开始了解决无穷无尽的报错。。。Elementtypeisinvalid:expectedastring(forbuilt-incomponents)oraclass/function......
  • react中数组的操作
    添加元素:你可以使用push方法来在数组的末尾添加一个元素,或者使用unshift方法来在数组的开头添加一个元素。你也可以使用concat方法或者扩展运算符...来合并两个数组。letarr=[1,2,3];arr.push(4);//arrisnow[1,2,3,4]arr.unshift(0);//arrisnow[0,1,2,3,......
  • react项目vite报错:UnhandledPromiseRejectionWarning: SyntaxError: Unexpected toke
    问题:vite报错:UnhandledPromiseRejectionWarning:SyntaxError:Unexpectedtoken'??='今天clone一个vite的项目,安装依赖后运行npmrundev报错:UnhandledPromiseRejectionWarning:SyntaxError:Unexpectedtoken'??='atLoader.moduleStrategy(internal/modules......
  • react18 typeScript useSelector 提示state 类型未知
     解决方案store/index.tsximport{configureStore}from'@reduxjs/toolkit';import{useSelector,useDispatch}from'react-redux'importtype{TypedUseSelectorHook}from'react-redux'importuserfrom'./modules/user&#......
  • react 使用 antd 创建全局loading
    代码如下:importReactDOMfrom'react-dom';import{Spin}from'antd';exportconstshowGlobalLoading=()=>{constdom=document.createElement('div')dom.id='globalLoading'dom.style='widt......