gpt4 book ai didi

reactjs - 如何解决生产中未样式化内容的闪烁?

转载 作者:行者123 更新时间:2023-12-03 14:30:16 25 4
gpt4 key购买 nike

我正在为我的应用程序使用 NextJs,并且我在生产中有一个 FOUC。我没有使用样式组件,只是使用模块化和全局 CSS/SCSS。我认为问题可能来自我的 _document.js 文件

import React from 'react';
import Document, {Html, Head, Main, NextScript} from 'next/document';

class MyDocument extends Document {
static async getInitialProps(ctx) {
const initialProps = await Document.getInitialProps(ctx);
return {...initialProps};
}

render() {
return (
<Html>
<Head>
<link href="/static/scss/vendor/antd.css" rel="stylesheet" />
<link href="/static/scss/vendor/bootstrap.min.css" rel="stylesheet" />
<link href="/static/scss/base/typography.css" rel="stylesheet" />
<link href="/static/scss/base/ionicons.min.css" rel="stylesheet" />
<link href="/static/scss/base/flaticons.css" rel="stylesheet" />
<link href="/static/scss/base/reset.css" rel="stylesheet" />
</Head>
<body>
<div id="fb-root" />
<Main />
<NextScript />
</body>
</Html>
);
}
}

export default MyDocument;

最佳答案

那是因为您使用 <Link> 导入 css,因此应用程序将呈现,然后浏览器将下载 CSS 并应用它。您应该使用 next.js 插件 next-cssnext-Sass 然后按如下方式导入您的 css:
import "../public/css/myAboveTheFoldCss.css"
否则 this 似乎是另一种修复方法,但我建议使用插件。

编辑 :
如果使用 next-css,则必须将文件导入 custom App.js

CSS files can not be imported into your _document.js. You can use the _app.js instead or any other page.



所以你的 pages/_App.js 应该类似于:
import "../public/css/myAboveTheFoldCss.css"
// import all the css's here

function MyApp({ Component, pageProps }) {
return <Component {...pageProps} />
}

// Only uncomment this method if you have blocking data requirements for
// every single page in your application. This disables the ability to
// perform automatic static optimization, causing every page in your app to
// be server-side rendered.
//
// MyApp.getInitialProps = async (appContext) => {
// // calls page's `getInitialProps` and fills `appProps.pageProps`
// const appProps = await App.getInitialProps(appContext);
//
// return { ...appProps }
// }

export default MyApp

您也可以使用普通组件,然后在每个页面上导入它:
前任。 /components/App.js :
import Head from 'next/head'
import Header from '../components/Header'
import Footer from '../components/Footer'
import "../public/css/myAboveTheFoldCss.css"
// import all other css files


export default ({children, ...rest }) => ([
<Head key={0}>
<meta name='viewport' content='initial-scale=1.0, width=device-width' />
</Head>,
<div>
<Header/>
{children}
<Footer />
</div>
])

然后按如下方式使用它:
import App from '../components/App'
import React from 'react'
class Mycomp extends React.Component {
constructor (props) {
super(props)
}


render() {
return(
<App>
<p>My component</p>
</App>
)
}
}

export default Mycomp

关于reactjs - 如何解决生产中未样式化内容的闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59746289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com