MCPcopy Create free account
hub / github.com/QuarkGluonPlasma/react-course-code / useTimer

Function useTimer

message-component/src/Message/useTimer.tsx:9–45  ·  view source on GitHub ↗
(props: UseTimerProps)

Source from the content-addressed store, hash-verified

7}
8
9export function useTimer(props: UseTimerProps) {
10 const { remove, id, duration = 2000 } = props;
11
12 const timer = useRef<number | null>(null);
13
14 const startTimer = () => {
15 timer.current = window.setTimeout(() => {
16 remove(id);
17 removeTimer();
18 }, duration);
19 };
20
21 const removeTimer = () => {
22 if (timer.current) {
23 clearTimeout(timer.current);
24 timer.current = null;
25 }
26 };
27
28 useEffect(() => {
29 startTimer();
30 return () => removeTimer();
31 }, []);
32
33 const onMouseEnter = () => {
34 removeTimer();
35 };
36
37 const onMouseLeave = () => {
38 startTimer();
39 };
40
41 return {
42 onMouseEnter,
43 onMouseLeave,
44 };
45}

Callers 1

MessageItemFunction · 0.90

Calls 3

useEffectFunction · 0.90
startTimerFunction · 0.70
removeTimerFunction · 0.70

Tested by

no test coverage detected