【发布时间】:2022-12-15 00:47:44
【问题描述】:
我有一个 Nextjs 应用程序。我用它来构建 Coinbase 克隆。由于它使用window 对象连接到 metamsk,因此我需要在 Nextjs 中禁用 SSR。但是,如果我禁用 SSR 并重新启动服务器,它会破坏我的风格。看下图,关闭SSR重启开发服务器后,Navbar titleAssets的样式是如何变化的:
这是我的_app.js:
import dynamic from "next/dynamic";
import { ThemeProvider, createTheme } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
import { ChainId, ThirdwebProvider } from "@thirdweb-dev/react";
import { MoralisProvider } from "react-moralis";
import NoSSR from "./NoSSR";
import '../styles/globals.css'
const darkTheme = createTheme({
palette: {
mode: 'dark',
background:{
dark:'#0a0b0d',
}
},
});
function MyApp({ Component, pageProps }) {
return (
<NoSSR>
<ThemeProvider theme={darkTheme}>
<CssBaseline/>
{/* <ThirdwebProvider desiredChainId={ChainId.Rinkeby}>
</ThirdwebProvider> */}
<MoralisProvider serverUrl={'https://124a8yab5jee.usemoralis.com:2053/server'} appId='Seyf64uxlgqgxt5Y75p1M4Hq21CC5osXcvj4T8Yw'>
<Component {...pageProps} />
</MoralisProvider>
</ThemeProvider>
</NoSSR>
)
}
export default MyApp;
NoSSR.js:
import dynamic from 'next/dynamic'
import React from 'react'
const NoSsr = props => (
<React.Fragment>{props.children}</React.Fragment>
)
export default dynamic(() => Promise.resolve(NoSsr), {
ssr: false
})
我不明白为什么会这样,这是 Nextjs 中的错误吗?我也在使用 Material UI libaray。
【问题讨论】:
标签: javascript next.js server-side-rendering