如何在Next.js的自定义_document文件中添加link标签引入外部字体?
解决方案
你需要在自定义Document类中补充render方法,将字体link标签放到从next/document导入的<Head>组件内部即可。
完整修改后的代码如下:
import Document, { DocumentContext, Html, Head, Main, NextScript } from 'next/document'; import { ServerStyleSheet } from 'styled-components'; export default class MyDocument extends Document { static async getInitialProps(ctx: DocumentContext) { 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(); } } render() { return ( <Html lang="zh-CN"> <Head> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" /> <link href="https://fonts.googleapis.com/css2?family=Lexend:wght@100;300;400;500;600;700;800&display=swap" rel="stylesheet" /> </Head> <body> <Main /> <NextScript /> </body> </Html> ) } }
注意事项
- React组件内的HTML属性需要使用小驼峰写法,因此原属性
crossorigin要改为crossOrigin - link为自闭合标签,无需单独写
</link>结束标签
内容的提问来源于stack exchange,提问作者Arjen
相关产品推荐
相关产品推荐

