forked from mui/material-ui-pickers
-
Notifications
You must be signed in to change notification settings - Fork 0
/
_app.tsx
44 lines (36 loc) · 1.22 KB
/
_app.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React from 'react';
import App from 'next/app';
import store from '../store.jsx';
import cookies from 'next-cookies';
import getPageContext from '../utils/getPageContext';
import { Provider as ReduxProvider } from 'react-redux';
import { PageWithContexts, ThemeType } from '../layout/PageWithContext';
class MyApp extends App<{ theme: ThemeType }> {
pageContext = getPageContext();
static async getInitialProps({ Component, ctx }: any) {
let pageProps = {};
const { theme } = cookies(ctx);
if (Component.getInitialProps) {
pageProps = await Component.getInitialProps(ctx);
}
return { theme, pageProps };
}
componentDidMount() {
// Remove the server-side injected CSS.
const jssStyles = document.querySelector('#jss-server-side');
if (jssStyles && jssStyles.parentNode) {
jssStyles.parentNode.removeChild(jssStyles);
}
}
render() {
const { Component, pageProps, theme } = this.props;
return (
<ReduxProvider store={store}>
<PageWithContexts initialTheme={theme} pageContext={this.pageContext}>
<Component pageContext={this.pageContext} {...pageProps} />
</PageWithContexts>
</ReduxProvider>
);
}
}
export default MyApp;