微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 react.js 中加载页面后从 googleapis 加载字体

如何解决在 react.js 中加载页面后从 googleapis 加载字体

我与 SEO 顾问合作进行 SEO 优化和加快页面加载。他说字体和一些 javascript 库应该在页面加载后到达。因此,该网站的加载速度会更快,但是当我在互联网上查看它时,我找不到太多内容。我使用 React js 并且对 SEO 改进一无所知。我在标题组件中按如下方式调用字体。 Header 组件被称为 HeaderLayout 组件的其他嵌套组件,调用 HeaderLayout 访问其他页面的组件被调用。有没有办法在页面加载后加载这些?

return (
    <Head>      
      <link
        rel="stylesheet"
        href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
        integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZonixN0hoP+VmmDGMN5t9UJ0Z"
        crossOrigin="anonymous"
      />
      <link
        rel="stylesheet"
        href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;700&amp;display=swap"
      />

      <link
        rel="icon"
        type="image/x-icon"
        sizes="32x32"
        href="/icons/favico.ico"
      />
      <link rel="canonical" href={routerUrlWithoutQuery} />
      <Meta name="color-scheme" content="light" />
    </Head>
  )

解决方法

只需在 <link> 中为媒体属性设置一个无效值,然后在页面加载时将其设置为 all,如下所示:

<link rel="stylesheet" href="link here" media="none" onload="if(media!='all')media='all'">

当媒体查询的计算结果为 false 时,浏览器仍会下载样式表,但不会等待内容可用后再呈现页面。

,

也许你可以在 useEffect 中将它附加到头部?

示例:

useEffect(() => {
  const link = document.createElement("link");
  link.rel = "stylesheet";
  link.href =
    "https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css";
  link.integrity =
    "sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z";
  link.crossOrigin = "anonymous";
  document.head.appendChild(link);
},[]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。