如何在旧的 React 站点中实现 react-helmet-async
How to implement react-helmet-async in old React site
我有一个 client-side 呈现的 React 站点,我想为其实施 react-helmet-async
模块(版本 1.0.7)。
我在 React 应用中的情况:
/public/index.js
:
<head>
<title>My title in the index file</title>
...
所以对于某些页面,我希望有不同的页面标题。
尝试:
与示例 module provides 相比,我的 client-side React 存储库中没有 app.js
文件。因此,我所做的是将以下内容添加到我想要一个独特页面标题的页面中:
import { Helmet, HelmetProvider } from 'react-helmet-async';
render() {
return (
<div data-page="page11">
<HelmetProvider>
<Helmet>
<title>New title</title>
</Helmet>
</HelmetProvider>
... continues with what I already had in the render code block ...
结果:在网络浏览器的选项卡上,它在访问该特定页面时显示唯一的页面标题,而在其他页面显示通用页面标题。所以这很完美。 **但是,当我查看源代码时,它总是只包含通用页面标题;也在访问特定页面时。所以这不是我想要的(我正在为 SEO 实现独特的页面标题,我认为爬虫将从源代码中获取页面标题。)
我应该怎么做才能正确实现这个节点模块?
因为它是 client-side 渲染的 React 应用程序,而不是 server-side 渲染的,所以不可能更改源代码。它仅在 DOM 中发生变化。如果您想更改源代码以确保搜索引擎能够正确处理新标题,您别无选择,只能 pre-render / server-side 呈现 React 应用程序。
我有一个 client-side 呈现的 React 站点,我想为其实施 react-helmet-async
模块(版本 1.0.7)。
我在 React 应用中的情况:
/public/index.js
:
<head>
<title>My title in the index file</title>
...
所以对于某些页面,我希望有不同的页面标题。
尝试:
与示例 module provides 相比,我的 client-side React 存储库中没有 app.js
文件。因此,我所做的是将以下内容添加到我想要一个独特页面标题的页面中:
import { Helmet, HelmetProvider } from 'react-helmet-async';
render() {
return (
<div data-page="page11">
<HelmetProvider>
<Helmet>
<title>New title</title>
</Helmet>
</HelmetProvider>
... continues with what I already had in the render code block ...
结果:在网络浏览器的选项卡上,它在访问该特定页面时显示唯一的页面标题,而在其他页面显示通用页面标题。所以这很完美。 **但是,当我查看源代码时,它总是只包含通用页面标题;也在访问特定页面时。所以这不是我想要的(我正在为 SEO 实现独特的页面标题,我认为爬虫将从源代码中获取页面标题。)
我应该怎么做才能正确实现这个节点模块?
因为它是 client-side 渲染的 React 应用程序,而不是 server-side 渲染的,所以不可能更改源代码。它仅在 DOM 中发生变化。如果您想更改源代码以确保搜索引擎能够正确处理新标题,您别无选择,只能 pre-render / server-side 呈现 React 应用程序。