【发布时间】:2019-03-06 08:32:14
【问题描述】:
我正在尝试在服务器端加载我的 react-helmet 标记,以便在构建时将这些标记注入静态 html 文件。这将允许 Facebook 等直接获取源文件并使用适当的元标记。
用这个配置我的应用程序后,我在服务器端静态渲染输出中看到的只是:
<title data-react-helmet="true"></title>
设置:
gatsby-config.js
module.exports = {
plugins: ['gatsby-plugin-react-helmet']
}
app.tsx
import Helmet from 'react-helmet';
const Head: React.FunctionComponent<Props> = () => (
<Helmet title="the title is big" >
<meta name="description" content="the content" />
</Helmet >
);
...
gatsby-ssr.js
const {Helmet} = require('react-helmet');
exports.onRenderBody = () => {
console.log(Helmet.renderStatic())
}
**Output**
<title data-react-helmet="true"></title>
有什么想法吗?
【问题讨论】:
-
盖茨比的头盔插件已经将头盔插入
gatsby-ssr.js,因此您不需要这样做,如果您将Head组件包含到您的页面/模板中,它应该可以工作。你如何使用你的Head组件? -
@DerekNguyen 这是真的,但输出仍然相同 - 没有生成标签。理论上,通过
onRenderBody记录元项目应该仍然有效吗?<Head />作为组件加载到页面模板中。 -
你试过
Helmet.renderStatic()吗?这就是gatsby plugin use -
@DerekNguyen 是的对不起,这里写的方法不正确。
-
啊,那是生产版本。我一直在运行
gatsby develop。
标签: reactjs gatsby server-side-rendering react-helmet