您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import { ThemeProvider } from '@mui/material/styles';
  2. import {
  3. Hydrate,
  4. QueryClient,
  5. QueryClientProvider,
  6. } from '@tanstack/react-query';
  7. import { SessionProvider } from 'next-auth/react';
  8. import { appWithTranslation } from 'next-i18next';
  9. import Head from 'next/head';
  10. import { useState } from 'react';
  11. import Layout from '../components/layout/base-layout/Layout';
  12. import CircularIndeterminate from '../components/loader/route-loader/CircularIndeterminate';
  13. import StorageProvider from '../store/cart-context';
  14. import '../styles/globals.css';
  15. import theme from '../styles/muiTheme';
  16. function MyApp({ Component, pageProps: { session, ...pageProps } }) {
  17. const [queryClient] = useState(() => new QueryClient());
  18. return (
  19. <QueryClientProvider client={queryClient}>
  20. <Hydrate state={pageProps.dehydratedState}>
  21. <SessionProvider session={session}>
  22. <ThemeProvider theme={theme}>
  23. <StorageProvider>
  24. <Layout>
  25. <Head>
  26. <title>Coffee Shop</title>
  27. <meta name="description" content="NextJS template" />
  28. <meta
  29. name="viewport"
  30. content="width=device-width, initial-scale=1"
  31. />
  32. </Head>
  33. <CircularIndeterminate />
  34. <Component {...pageProps} />
  35. </Layout>
  36. </StorageProvider>
  37. </ThemeProvider>
  38. </SessionProvider>
  39. </Hydrate>
  40. </QueryClientProvider>
  41. );
  42. }
  43. MyApp.getInitialProps = async ({ Component, ctx }) => {
  44. let pageProps = {};
  45. if (Component.getInitialProps) {
  46. pageProps = await Component.getInitialProps(ctx);
  47. }
  48. return {
  49. pageProps,
  50. };
  51. };
  52. export default appWithTranslation(MyApp);