gpt4 book ai didi

html - React Helmet 不更新元标记

转载 作者:行者123 更新时间:2023-12-04 08:48:35 24 4
gpt4 key购买 nike

我有我的 index.html react项目中的页面如下:

<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8" />
<title>Bucard | Digital Business Card</title>

<meta name="title" content="Bucard | Digital Business Card">
<meta name="description" content="Bucard - Description for bucard" />
<meta property="og:title" content="Bucard | Digital Business Card" />
<meta property="og:image" content="http://m.digital-card.co.il/zedka/152/images/icon.png" />
<meta property="og:description" content="Bucard - Description for bucard" />
<meta property="og:url" content="https://bucard.co.il/" />
</head>

<body>
<div id="root"></div>
</body>

</html>
还有我的 react Helm 部分,它存在于组件中,它的路径在 url 上具有自身的路径:
<Helmet>
<title>{"Digital card of " + this.state.card.Name}</title>

<meta name="title" content={"Digital card of " + this.state.card.Name} />
<meta name="description" content="Description for the react-helmet section" />
<meta property="og:title" content={"Digital card of " + this.state.card.Name} />
<meta property="og:image" content="http://m.digital-card.co.il/friedman/249/images/icon.png" />
<meta property="og:description" content="Description for the react-helmet section" />
<meta property="og:url" content={"https://bucard.co.il/digitalCard/" + this.state.card.ShortID} />
</Helmet>
现在,这里的问题是 这里唯一替换的标签是 标签,但没有替换任何 标签 .
我没有服务器端渲染,我有服务器端(node.js)和返回一些值的 json 的函数,我在我的 react 应用程序中渲染。
我搜索了将近 2 周,但还没有解决这个问题,这对我的项目非常重要。
试过也放 data-react-helmet=true在不同的情况下,仍然无法正常工作。
谁能帮我解决这个问题?非常感谢 :)

最佳答案

对于没有 SSR(服务器端渲染)的 SPA,从机器人的角度来看,您的 head 标签位于 dist/public 文件夹中的静态 index.html 文件中。要添加将动态元素从 head 标签提供给机器人的功能,您可以:

  • 使用预渲染服务
  • 或者,使用 next.js 在服务器上呈现您的页面(或页面的一部分),以便机器人可以抓取
  • 查看 SSR 的其他解决方案

  • 您可以阅读 - https://github.com/nfl/react-helmet/issues/489
    一种对我有用的方法:
  • 将您的流量定向到节点服务器
  • 从此节点服务器返回您的 index.html 文件并传递头标签。
    return res.render('index', {
    headTags: ReactDOMServer.renderToStaticMarkup(tags),
    })

  • 在这里, 标签 是一个 HTML 元素数组,例如 <meta/>, <title/>等等
    奖励:您可以导入相同的 标签 前端模块获取 的头部标签 Helm .
  • 在您的 index.html 中,您可以使用 Handlebars 读取从节点服务器传递的头标签并在头部分打印头标签。
    <head>

    {{{
    headTags
    }}}
    ...
    </head>

  • 并将 Handlebars 用作引擎,请将其添加到您的节点服务器 app.engine('html', handlebars.engine);

    关于html - React Helmet 不更新元标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64184706/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com