【问题标题】:How to convert headless wordpress href to <Link>如何将无头 wordpress href 转换为 <Link>
【发布时间】:2021-04-26 18:13:36
【问题描述】:

不确定这是否可行,但我正在将 Next.js 与 WordPress API 又名无头 wordpress 一起使用。我正在输出一个由文本和链接组成的古腾堡区域。链接的问题在于它们不是通过 Next.js 方式完成的,当您单击一个链接时,您可以在控制台中看到它正在重新加载整个页面,而不是在不刷新的情况下进行链接。

所以,如果我在 Next.js 中设置链接,我会这样做

  <Link href="/posts/first-post">
    <a>this page!</a>
  </Link>

但是因为我正在这样做

      <div
        className="content"
        dangerouslySetInnerHTML={{
          __html: DOMPurify.sanitize(homeData.kidsSectionContent),
        }}
      />

我得到了 WordPress 给我的任何东西&lt;a href="some-page"&gt;click me&lt;a/&gt;

【问题讨论】:

  • 您是否尝试过解析从 WordPress 获得的 HTML 并替换 &lt;a&gt;s?
  • @juliomalves,不知道该怎么做,我会查一下。但我还需要以某种方式区分内部链接和外部链接,因为我想它们应该被区别对待。
  • 可以解析href的值,判断是内部还是外部。

标签: reactjs wordpress next.js headless-cms


【解决方案1】:

我认为它不像你想要的那样工作。因为&lt;Link其实是JSX代码,就是转换成javascript的类似html的代码。

实际上&lt;Link ...&gt; 语法被编译成类似:

const Link = require("path/to/Link.js");
React.createElement(Link, {props});

您正在从 api 获取原始 html 数据,并且您希望将这些数据转换为已编译的 javascript。所以它可以连接到 React 中。据我了解,这可能是可能的,但不是很有用。因为一个简单的破坏 html 结果,会破坏你的页面。

我认为您需要问自己为什么要使用单页行为。

但是,我认为如果你可以用响应式语法替换你的 html,然后用 JSX 解析它,你可能会得到你想要的。但它可能会很慢,并且可能会破坏页面。

【讨论】:

  • 问题在于 Next.js 站点通常非常快。但是,当您从 API 获得内部链接时,当您单击其中一个链接时,它会减慢速度,因为它会再次刷新整个页面并重新加载所有内容,相比之下,这并不是一个很好的体验。
猜你喜欢
  • 2015-10-16
  • 2017-05-09
  • 1970-01-01
  • 2021-03-27
  • 1970-01-01
  • 2014-10-07
  • 1970-01-01
  • 1970-01-01
  • 2018-12-18
相关资源
最近更新 更多