React hooks如何清除定时器并验证效果

 更新时间:2024年10月11日 16:41:43   作者:harmsworth2016  
在React中,通过自定义Hook useTimeHook实现定时器的启动与清除,在App组件中使用Clock组件展示当前时间,利用useEffect钩子在组件挂载时启动定时器,同时确保组件卸载时清除定时器,避免内存泄露,这种方式简化了状态管理和副作用的处理

React hooks清除定时器并验证效果

目录结构

如下所示:

useTime hook

// src/hooks/common.ts
import { useEffect, useState } from "react";

export function useTime() {
    const [time, setTime] = useState<Date>(() => new Date())
    useEffect(() => {
        const id: NodeJS.Timer = setInterval(() => {
            setTime(new Date())
        }, 1000)
        return () => {
            console.log('组件销毁清除定时器');
            clearInterval(id)
        }
    }, [])
    console.log('返回时间')
    return time
}

Clock.tsx使用useTime hook

// src/test/Clock.tsx
import React from 'react';
import { useTime } from '@/hooks/common';

function Clock() {
    const time = useTime()
    return (
        <h1>{time.toLocaleTimeString()}</h1>
    );
}

export default Clock;

App.tsx显示Clock组件

// src/App.tsx
import React, { useState } from 'react';
import Clock from './test/Clock'
import './App.css';

function App() {
    const [show, setShow] = useState<boolean>(true)

    return (
        <div className="App">
            <button onClick={() => setShow(!show)}>{show ? '隐藏' : '显示'}</button>
            {show && <Clock />}
        </div>
    );
}

export default App;

显示时间(开启定时器)

隐藏时间(清除定时器)

总结

React hook启用定时器后,在组件销毁时清除定时器

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

参考:

相关文章

  • React 中的重新渲染类组件及函数组件

    React 中的重新渲染类组件及函数组件

    这篇文章主要为大家介绍了React 中的重新渲染类组件及函数组件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • useEffect支持async及await使用方式

    useEffect支持async及await使用方式

    这篇文章主要为大家介绍了useEffect支持async及await的使用方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • React 组件中的state和setState()你知道多少

    React 组件中的state和setState()你知道多少

    这篇文章主要为大家详细介绍了React组件中的state和setState(),文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • react中使用video.js的踩坑记录

    react中使用video.js的踩坑记录

    这篇文章主要介绍了react中使用video.js的踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • react无限滚动组件的实现示例

    react无限滚动组件的实现示例

    本文主要介绍了react无限滚动组件的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • hooks写React组件的5个注意细节详解

    hooks写React组件的5个注意细节详解

    这篇文章主要为大家介绍了hooks写React组件的5个需要注意的细节详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • React源码state计算流程和优先级实例解析

    React源码state计算流程和优先级实例解析

    这篇文章主要为大家介绍了React源码state计算流程和优先级实例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • react实现消息显示器

    react实现消息显示器

    这篇文章主要为大家详细介绍了react实现消息显示器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • React中代码分割的4种实现方式

    React中代码分割的4种实现方式

    虽然一直有做react相关的优化,按需加载、dll 分离、服务端渲染,但是从来没有从路由代码分割这一块入手过,所以下面这篇文章主要给大家介绍了关于React中代码分割的4种实现方式,需要的朋友可以参考下
    2022-01-01
  • React中useEffect与生命周期钩子函数的对应关系说明

    React中useEffect与生命周期钩子函数的对应关系说明

    这篇文章主要介绍了React中useEffect与生命周期钩子函数的对应关系说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09

最新评论