Skip to content

Instantly share code, notes, and snippets.

@alfonmga
Created October 18, 2020 18:14
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alfonmga/af1c8ac2af8cf845f777ba68f4eeab7c to your computer and use it in GitHub Desktop.
Save alfonmga/af1c8ac2af8cf845f777ba68f4eeab7c to your computer and use it in GitHub Desktop.
Next.js lazy load / preload CSS
import NextHead from 'next/head'
import { useEffect, useRef, useState } from 'react'
export type LazyLoadCSSProps = {
href: string
}
let hydrated = false
const LazyLoadCSS: React.FC<LazyLoadCSSProps> = ({ href }) => {
const hydratedRef = useRef(false)
const [, rerender] = useState(false)
useEffect(() => {
if (!hydratedRef.current) {
hydrated = true
hydratedRef.current = true
rerender(true)
}
}, [])
return (
<NextHead>
<link rel="preconnect" href={href} />
<link rel="preload" as="style" href={href} />
<link href={href} rel="stylesheet" media={!hydrated ? 'print' : 'all'} />
</NextHead>
)
}
export default LazyLoadCSS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment