在 React 中插入 HTML 注释

IT技术 javascript reactjs comments react-jsx
2021-05-16 13:21:10

有没有办法在 React JSX 中插入 HTML 注释节点,就像插入组件或 DOM 节点一样?

例如,类似于:

React.createElement(Comment, {}, "comment text");

将呈现为:

<!-- comment text -->

这个想法是评论在页面上可见,所以{ /* this /* }没有回答我的问题。

请注意,以下相关问题没有答案,而是要求有所不同:

如何在 React 中渲染 HTML 注释?

我只想渲染一个评论节点。我注意到 React 基础设施自己呈现 HTML 注释,所以也许也有一种(有点 hacky?)的方法来做到这一点。

2个回答

另一种选择是使用危险的SetInnerHTML

<div dangerouslySetInnerHTML={{ __html: '<!-- comment text -->' }} />

risklySetInnerHTML 是 React 在浏览器 DOM 中使用 innerHTML 的替代品。一般来说,从代码中设置 HTML 是有风险的,因为很容易在不经意间将用户暴露给跨站点脚本 (XSS) 攻击。所以,你可以直接从 React 设置 HTML,但是你必须输入危险的 SetInnerHTML 并传递一个带有 __html 键的对象,以提醒自己这是危险的。

https://facebook.github.io/react/docs/dom-elements.html#dangerouslysetinnerhtml

我唯一能想到的就是在 componentDidMount 上操作 DOM 并在那里添加您的评论,但是 React 不会处理该 DOM 操作,所以它可能会导致一些问题?

    var HTMLComment = React.createClass({

      componentDidMount: function(){
        var htmlComment = "<!--" + this.props.comment + "-->"; 
          this.span.innerHTML = htmlComment;
      },

      render: function(){
        return (
            <span ref={(span) => this.span = span} ></span>
        )
      }
    })