Estoy usando tailwindcss con módulos css y me doy cuenta de que la primera vez que se carga la página, no se cargan todos mis estilos. Tratando de imaginar que ponía lo que estaba sucediendo, ejecuté el ejemplo tailwindcss y agregué un estilo de un módulo css y también sucede allí, incluso cuando se construyó para prod.
Ejecute el ejemplo de https://github.com/zeit/next.js/tree/canary/examples/with-tailwindcss
Agregue un archivo index.module.css
con algo de estilo
agregue los estilos del módulo css en la página index.js
Sin el uso de los módulos CSS, todos los estilos se cargan bien la primera vez, sin parpadear. Se espera el mismo comportamiento usando módulos css
Sospecho que esto puede tener algo que ver con la división automática del código de los módulos css 🤔
Probablemente relacionado con https://github.com/zeit/next.js/issues/10268
He usado módulos CSS simples para componentes y estilos que se aplican después de algunos ms.
He usado módulos CSS simples para componentes y estilos que se aplican después de algunos ms.
De acuerdo con https://stackoverflow.com/a/42969608/943337, acabo de agregar una etiqueta de script vacía y mi problema de una barra lateral que aparecía en la primera carga, ahora está resuelto.
https://github.com/vercel/next-plugins/issues/455#issuecomment -489452379
import Document, { Html, Head, Main, NextScript } from 'next/document';
import { GA_TRACKING_ID } from '../utils/anayltics';
class MyDocument extends Document {
static async getInitialProps(ctx) {
const initialProps = await Document.getInitialProps(ctx);
return { ...initialProps };
}
render() {
return (
<Html lang="de">
<Head>
</Head>
<body>
<Main />
<NextScript />
{/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */}
<script> </script>
</body>
</Html>
);
}
}
export default MyDocument;
He usado módulos CSS simples para componentes y estilos que se aplican después de algunos ms.
De acuerdo con https://stackoverflow.com/a/42969608/943337, acabo de agregar una etiqueta de script vacía y mi problema de una barra lateral que aparecía en la primera carga, ahora está resuelto.
import Document, { Html, Head, Main, NextScript } from 'next/document'; import { GA_TRACKING_ID } from '../utils/anayltics'; class MyDocument extends Document { static async getInitialProps(ctx) { const initialProps = await Document.getInitialProps(ctx); return { ...initialProps }; } render() { return ( <Html lang="de"> <Head> </Head> <body> <Main /> <NextScript /> {/* Empty script tag as chrome bug fix, see https://stackoverflow.com/a/42969608/943337 */} <script> </script> </body> </Html> ); } } export default MyDocument;
Gracias @ Adrianjs42, la barra lateral apareciendo se detuvo en cromo.
También relacionado
https://github.com/vercel/next.js/issues/13058
Hay una solución para resolver este problema.
Cree un " _document.js
" personalizado y agregue la clase " no-fouc
" en el componente Html
Cree un " _app.js
" personalizado y agregue el siguiente código en el " componentDidMount
"
const removeFouc = (foucElement) => {
foucElement.className = foucElement.className.replace('no-fouc', 'fouc')
}
removeFouc(document.documentElement)
Agregue agregue estos estilos en los estilos globales:
.no-fouc {
visibility: hidden;
opacity: 0;
}
.fouc {
visibility: visible;
opacity: 1;
}
¡Esto debería arreglarse en next@^9.4.5-canary.15
! Actualice y avísenos.
@Timer , he instalado next@^9.4.5-canary.18
. Ahora, el parpadeo de CSS no aparece en el modo de desarrollo , pero permanece igual en la versión de producción . La versión de producción todavía tiene el error.
Tenga en cuenta que estoy usando módulos material-ui + css
Aquí hay una versión de la aplicación en la que he estado trabajando para enfrentar este problema: https://cluster-11-lwj6nmcgy.vercel.app/ .
@ Prottoy2938 Lo mismo aquí. Hice un comentario sobre este problema https://github.com/vercel/next.js/issues/13058#issuecomment -654165987
@Timer , he instalado
next@^9.4.5-canary.18
. Ahora, el parpadeo de CSS no aparece en el modo de desarrollo , pero permanece igual en la versión de producción . La versión de producción todavía tiene el error.Tenga en cuenta que estoy usando módulos material-ui + css
Aquí hay una versión de la aplicación en la que he estado trabajando para enfrentar este problema: cluster-11-lwj6nmcgy.vercel.app .
Parece que su caso no está relacionado con los módulos css / tailwind y más relacionado con el olvido de implementar la representación previa de material-ui: https://github.com/vercel/next.js/issues/7322#issuecomment -653858948
@casperle , en mi caso el problema fue porque estaba haciendo renderización del lado del servidor . Seguí esta documentación de material-ui y solucioné el problema
Con v9.4.5-canary.28 no parpadea en desarrollo y parpadea en producción.
Comentario más útil
Hay una solución para resolver este problema.
Cree un "
_document.js
" personalizado y agregue la clase "no-fouc
" en el componente HtmlCree un "
_app.js
" personalizado y agregue el siguiente código en el "componentDidMount
"Agregue agregue estos estilos en los estilos globales: