Reactjs 如何在Gatsby站点的主体中包含带有外部脚本的嵌入代码?

Reactjs 如何在Gatsby站点的主体中包含带有外部脚本的嵌入代码?,reactjs,gatsby,server-side-rendering,Reactjs,Gatsby,Server Side Rendering,我正在为我的第一个盖茨比网站工作,除了需要在其中一个页面的主体中放置一个嵌入代码外,我很乐意去做。我查看了SSR API的文档,但似乎找不到任何关于如何实现这一点的清晰文档。下面是需要嵌入的代码。任何帮助都将不胜感激 下面的嵌入代码只需要放在一个页面的正文中(不是站点上的每个页面) .vagaro a{字体大小:10px;颜色:#AAA;文本装饰:无;} 如果您需要在每个页面添加这些内容,您可以使用html.js来完成 首先复制现有的html.js,以便进行持久性更改: cp .cache/de

我正在为我的第一个盖茨比网站工作,除了需要在其中一个页面的主体中放置一个嵌入代码外,我很乐意去做。我查看了SSR API的文档,但似乎找不到任何关于如何实现这一点的清晰文档。下面是需要嵌入的代码。任何帮助都将不胜感激

下面的嵌入代码只需要放在一个页面的正文中(不是站点上的每个页面)

.vagaro a{字体大小:10px;颜色:#AAA;文本装饰:无;}

如果您需要在每个页面添加这些内容,您可以使用
html.js
来完成

首先复制现有的
html.js
,以便进行持久性更改:

cp .cache/default-html.js src/html.js
然后清除缓存和公用文件夹: 盖茨比清洁酒店

然后在关闭
之前,用所需代码编辑
src/html.js

从“React”导入React
从“道具类型”导入道具类型
导出默认函数HTML(道具){
返回(
{props.headComponents}
{`.vagaro a{字体大小:10px;颜色:#AAA;文本装饰:无;}`}
{props.preBodyComponents}
{props.postBodyComponents}
)
}
HTML.propTypes={
HtmlatAttributes:PropTypes.object,
headComponents:PropTypes.array,
bodyAttributes:PropTypes.object,
preBodyComponents:PropTypes.array,
正文:PropTypes.string,
postBodyComponents:PropTypes.array,
}

如果只需要将其添加到单个页面,请使用react

import React from 'react';
import Helmet from 'react-helmet';

const SecondPage = () => {
  return (
    <>
      <Helmet>
        <title>Page Two</title>
        <style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
        <script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
      </Helmet>
      <h1>Page Two</h1>
      <p>Welcome to page 2</p>
    </>
  );
};

export default SecondPage;
从“React”导入React;
从“反应头盔”导入头盔;
常量第二页=()=>{
返回(
第二页
{`.vagaro a{字体大小:10px;颜色:#AAA;文本装饰:无;}`}
第二页
欢迎来到第2页

); }; 导出默认第二页;
如果这出现在其中一个页面的正文中,您可以将script标记作为常规JSX标记包含,或者如果您希望以编程方式将其包含在mount hook或component did mount lifecile方法中,也可以将其包含在mount hook或component did mount lifecile方法中。如果您这样做,请小心避免重复包含同一脚本,这可能会给您带来奇怪的副作用。看起来componentDidMount可能是一种方法。谢谢你的提示。我会密切关注double Include。这会将嵌入代码添加到每个页面吗?对不起,我的问题不清楚。我需要将代码添加到单个页面。
import React from "react"
import PropTypes from "prop-types"

export default function HTML(props) {
  return (
    <html {...props.htmlAttributes}>
      <head>
        <meta charSet="utf-8" />
        <meta httpEquiv="x-ua-compatible" content="ie=edge" />
        <meta
          name="viewport"
          content="width=device-width, initial-scale=1, shrink-to-fit=no"
        />
        {props.headComponents}
        <style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
        <script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
      </head>
      <body {...props.bodyAttributes}>
        {props.preBodyComponents}
        <div
          key={`body`}
          id="___gatsby"
          dangerouslySetInnerHTML={{ __html: props.body }}
        />
        {props.postBodyComponents}
      </body>
    </html>
  )
}

HTML.propTypes = {
  htmlAttributes: PropTypes.object,
  headComponents: PropTypes.array,
  bodyAttributes: PropTypes.object,
  preBodyComponents: PropTypes.array,
  body: PropTypes.string,
  postBodyComponents: PropTypes.array,
}
import React from 'react';
import Helmet from 'react-helmet';

const SecondPage = () => {
  return (
    <>
      <Helmet>
        <title>Page Two</title>
        <style>{`.vagaro a {font-size:10px; color:#AAA; text-decoration:none;}`}</style>
        <script type="text/javascript" src="https://www.vagaro.com//resources/WidgetEmbeddedLoader/OZqnC30tDZCcT3q"></script>
      </Helmet>
      <h1>Page Two</h1>
      <p>Welcome to page 2</p>
    </>
  );
};

export default SecondPage;