Custom hook with clear and update time not works as per expected
When update the default time with setInterval
, it's not working as expected. Instead it's added as a new instance. How to clear the setInterval
in the custom hook and update new value?
app.jsx
import React from 'react';
import './style.css';
import CustomTimer from './Custom';
import { useState, useEffect } from 'react';
export default function App() {
const [intervalTime, setIntervalTime] = useState(200);
const time = CustomTimer(intervalTime);
useEffect(() => {
setTimeout(() => {
console.log('Hi');
setIntervalTime(500);
}, 5000);
});
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<h2>Start editing to see some happen! {time} </h2>
</div>
);
}
Custom.js
import { useEffect, useState } from 'react';
function CustomTimer(startTime) {
const [timer, setTimer] = useState(startTime);
useEffect(() => {
const myInterval = setInterval(() => {
if (timer > 0) {
setTimer(timer - 1);
console.log(timer);
}
}, 1000);
return () => clearInterval(myInterval);
}, [startTime]);
return timer;
}
export default CustomTimer;
Live Demo => please check the console
Comments
Post a Comment