@playbooks/hooks
Version:
A collection of React hooks for Playbooks.
40 lines (39 loc) • 1.19 kB
JavaScript
import { useState, useEffect } from "react";
const useNavigationStart = (router, method) => {
const [active, setActive] = useState(false);
useEffect(() => {
router.events.on("routeChangeStart", () => setActive(true));
if (active) method();
return () => {
router.events.off("routeChangeStart", () => setActive(false));
};
}, [active, router.asPath]);
return active;
};
const useNavigationComplete = (router, method) => {
const [active, setActive] = useState(false);
useEffect(() => {
router.events.on("routeChangeComplete", () => setActive(true));
if (active) method();
return () => {
router.events.off("routeChangeComplete", () => setActive(false));
};
}, [active, router.asPath]);
return active;
};
const useNavigationError = (router, method) => {
const [active, setActive] = useState(false);
useEffect(() => {
router.events.on("routeChangeError", () => setActive(true));
if (active) method();
return () => {
router.events.off("routeChangeError", () => setActive(false));
};
}, [active, router.asPath]);
return active;
};
export {
useNavigationComplete,
useNavigationError,
useNavigationStart
};