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启用定时器后,在组件销毁时清除定时器
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
参考:
发表评论