在 React 组件的 html 中渲染注释{props.pageTitle}

问题描述 投票:0回答:2

我正在尝试渲染一个带有注释的 html 组件,以便注释在 DOM 中显示为注释。

我目前有

<head>
    <title>{props.pageTitle}</title>
</head>

但是我想要

<head>
    <title>{props.pageTitle}</title>

    <!-- Some information here --> 

</head>

我想避免使用以下内容:

dangerouslySetHtml
element.innerHTML = "...";
element.outerHTML = "...";
javascript html reactjs
2个回答
2
投票

组件安装后,您可以检索当前的 DOM 元素,然后应用一些 DOM 操作将 HTML 注释放置在您需要的位置。您可以在下面找到一个由 HTML 注释包裹的组件的示例。

componentDidMount() {       
    // Get current node
    let currentNode = ReactDOM.findDOMNode(this);
    // Get parent node
    let parentNode = currentNode.parentNode;
    // Create the comment to insert before
    let commentBefore = document.createComment("Begin Tag");
    parentNode.insertBefore(commentBefore, currentNode);
    // Create the comment to insert after
    let commentAfter = document.createComment("End Tag");
    parentNode.insertBefore(commentAfter, currentNode.nextSibling);
}

0
投票

我找到了一种几乎立即插入注释且无需包装器的方法,但它仅在从服务器端渲染时才有效(参见此答案),因此它不会更新客户端上的状态。

如果您需要插入一些信息供人们阅读(例如调试元数据或复活节彩蛋),这应该足够了。但是,如果您的 HTML 是由不运行文档中的脚本的程序进行后处理的,那么它只会看到带有代码的

<script>
标记。

"use client";

export default function Comment({ text }) {
  if (typeof window === "undefined") {
    const code = `document.currentScript.outerHTML = "<!-- ${text} -->"`;
    return <script>{code}</script>;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.