@playbooks/hooks
Version:
A collection of React hooks for Playbooks.
42 lines (41 loc) • 1.21 kB
JavaScript
import { useEffect } from "react";
const useLocalStorage = (method, listeners) => {
useEffect(() => {
window.addEventListener("storage", method);
return () => window.removeEventListener("storage", method);
}, [...listeners]);
};
const useOffline = (method, listeners) => {
useEffect(() => {
method();
window.addEventListener("offline", method);
return () => window.removeEventListener("online", method);
}, [...listeners]);
};
const useOnline = (method, listeners) => {
useEffect(() => {
method();
window.addEventListener("online", method);
return () => window.removeEventListener("online", method);
}, [...listeners]);
};
const useResize = (method, listeners) => {
useEffect(() => {
method();
window.addEventListener("resize", method);
return () => window.removeEventListener("resize", method);
}, [...listeners]);
};
const useResizeTarget = (element, method, listeners) => {
useEffect(() => {
if (element) element.addEventListener("resize", method);
return () => element && element.removeEventListener("resize", method);
}, [...listeners]);
};
export {
useLocalStorage,
useOffline,
useOnline,
useResize,
useResizeTarget
};