#reactjs #next.js #styled-components
Вопрос:
Почему мои глобальные стили дублируются? Я использую стилизованные компоненты и создал файл GlobalStyles.js. в корне применения, как я делаю в React или в «Гэтсби». В этом файле я называю стиль Hook createGlobalStyle и определяю все глобальные css. Проблема в том, что весь мой глобальный css дублируется в Next.
_document.js
import Document from 'next/document'
import { ServerStyleSheet } from 'styled-components'
export default class MyDocument extends Document {
static async getInitialProps(ctx) {
const sheet = new ServerStyleSheet()
const originalRenderPage = ctx.renderPage
try {
ctx.renderPage = () =>
originalRenderPage({
enhanceApp: (App) => (props) =>
sheet.collectStyles(<App {...props} />),
})
const initialProps = await Document.getInitialProps(ctx)
return {
...initialProps,
styles: (
<>
{initialProps.styles}
{sheet.getStyleElement()}
</>
),
}
} finally {
sheet.seal()
}
}
}
_app.js
import { GlobalStyles } from '../../GlobalStyles'
import Layout from '../components/Layout'
function MyApp({ Component, pageProps }) {
return (
<>
<Layout>
<GlobalStyles />
<Component {...pageProps} />
</Layout>
</>
)
}
export default MyApp
I am absolutely new in Next — is my first App.
"dependencies": {
"babel-plugin-styled-components": "^1.13.2",
"next": "11.1.0",
"react": "17.0.2",
"react-dom": "17.0.2",
"styled-components": "^5.3.1"
},
It should probably be something very simple.
.babelrc
{
"presets": [
"next/babel"
],
"plugins": [
"babel-plugin-styled-components"
]
}