Skip to content

Instantly share code, notes, and snippets.

@farhadjaman
Last active October 22, 2023 04:20
Show Gist options
  • Save farhadjaman/7448812cd14eb6e0c222485cbe4890fd to your computer and use it in GitHub Desktop.
Save farhadjaman/7448812cd14eb6e0c222485cbe4890fd to your computer and use it in GitHub Desktop.
Monitor the duration between transitions in states.
import { useState, useEffect } from 'react';
const TestStateChangeTime = ({}) => {
const [elapsedTime, setElapsedTime] = useState(0);
const [isModalOpen, setIsModalOpen] = useState(false);
const handleButtonClick = () => {
setIsModalOpen(!isModalOpen);
};
useEffect(() => {
let interval; // Store the interval ID
if (isModalOpen) {
// Start the timer when the video is opened
setElapsedTime(0);
// Update elapsed time every 1 second
interval = setInterval(() => {
setElapsedTime((prevElapsedTime) => prevElapsedTime + 1);
}, 1000); // Update every 1 second (1000 milliseconds)
} else {
// Stop the timer when the video is closed
if (interval) {
clearInterval(interval);
}
if (elapsedTime > 0) {
console.log(elapsedTime);
setElapsedTime(0);
}
}
// Clean up the interval when the component unmounts
return () => {
if (interval) {
clearInterval(interval);
}
};
}, [isModalOpen]);
return (
<>
<button onClick={handleButtonClick}>Toggle Modal</button>
</>
);
};
export default TestStateChangeTime;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment