import { SWRConfig } from "swr"; import Script from "next/script"; import type { NextPage } from "next"; import { useRouter } from "next/router"; import type { AppProps } from "next/app"; import App, { AppContext } from "next/app"; import { ReactElement, ReactNode, useEffect } from "react"; import { Context } from "../libs/context"; import Layout from "../components/common/Layout"; import "../styles/globals.scss"; import { pageview } from "../libs/gtag"; import { GA_TRACKING_ID } from "../libs/config"; export type NextPageWithLayout
= NextPage
& {
getLayout?: (page: ReactElement) => ReactNode;
};
type AppPropsWithLayout = AppProps & {
Component: NextPageWithLayout;
pageProps: {
fallback?: {
[key: string]: any;
};
[key: string]: any;
};
};
const MyApp = ({ Component, pageProps }: AppPropsWithLayout) => {
const { fallback, genre, ...otherProps } = pageProps;
const router = useRouter();
useEffect(() => {
const handleRouteChange = (url: string) => {
pageview(url);
};
router.events.on("routeChangeComplete", handleRouteChange);
router.events.on("hashChangeComplete", handleRouteChange);
return () => {
router.events.off("routeChangeComplete", handleRouteChange);
router.events.off("hashChangeComplete", handleRouteChange);
};
}, [router.events]);
return (
<>