Skip to content

Instantly share code, notes, and snippets.

View janpaepke's full-sized avatar

Jan Paepke janpaepke

View GitHub Profile
useEffect(() => reversibleEvent(window, 'click', () => alert('clicked!')), []);
export const reversibleEvent = (target, listener, callback) => {
target.addEventListener(listener, callback);
return () => target.removeEventListener(listener, callback);
};
useEffect(() => {
const cleanup = reversibleTimeout(() => alert('one second has passed!'), 1000);
return cleanup;
}, []);
// which we can simplify further to ⬇
useEffect(() => reversibleTimeout(() => alert('one second has passed!'), 1000), []);
export const reversibleTimeout = (callback, ms) => {
const timeoutId = setTimeout(callback, ms);
return () => clearTimeout(timeoutId);
};
useEffect(() => {
const myCallback = () => {
alert('clicked!');
};
window.addEventListener('click', myCallback);
return () => {
window.removeEventListener('click', myCallback);
};
}, []);
useEffect(() => {
const timeoutId = setTimeout(() => alert('one second has passed!'), 1000);
return () => {
clearTimeout(timeoutId);
};
}, []);
useEffect(() => {
setTimeout(() => alert('one second has passed!'), 1000);
}, []);