首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用react解析器还是innerHTML解析html字符串?哪个更快?

使用react解析器还是innerHTML解析html字符串?哪个更快?
EN

Stack Overflow用户
提问于 2022-10-09 03:36:31
回答 1查看 156关注 0票数 2

我从后端接收html字符串。我正在使用react- html解析器解析html字符串。但是包的导入大小是174kb。我可以使用innerHTML做同样的事情。请参阅下面的代码。我将innerHTML设置为useEffect,以便在text更改时反映更改。

  • 使用innerHTML
代码语言:javascript
复制
  useEffect(() => {
    document.getElementById(`text-${_id}`).innerHTML = text;
}, [text]);
  • 使用解析器(我可以在can语句本身中这样做)
代码语言:javascript
复制
function SomeComponent({_id}) {
return (
    <div className="list-group-item mb-3">
      <div id={`text-${_id}`}>
        {parser(text)}
      </div>
    </div>
)}

我使用importCost扩展查看了导入大小。Acc.对你来说,哪种方法会更快。是否值得使用html-react-parser

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-09 04:10:21

React是一个JavaScript库,它内部使用JavaScript,所以它会慢一些。

如果它只是设置一个html值,您可以使用.innerHTML,但是它的使用有安全考虑

为了避免注入攻击(如XSS),我们应该在插入时对html进行消毒(即使DB存储的是经过消毒的html)。

使用像sanitize-htmlreact-sanitize-html这样的消毒液

代码语言:javascript
复制
import SanitizedHTML from 'react-sanitized-html';

function SomeComponent({_id}) {
return (
    <div className="list-group-item mb-3">
      <div id={`text-${_id}`}
        <SanitizedHTML html={ text} />
      </div>
    </div>
)}

html-to-react解析器(内部调用html-to-dom-parser)是特定于react的,具有不同的用途。如果你看它的签名,

代码语言:javascript
复制
/**
 * Converts HTML string to React elements.
 *
 * @param {string} html - HTML string.
 * @param {object} [options] - Parser options.
 * @param {object} [options.htmlparser2] - htmlparser2 options.
 * @param {object} [options.library] - Library for React, Preact, etc.
 * @param {Function} [options.replace] - Replace method.
 * @returns {JSX.Element|JSX.Element[]|string} - React element(s), empty array, or string.
 */
function HTMLReactParser(html, options)

您可以看到它返回React元素、空数组或字符串。

请注意,Element.innerHTML不是DOM解析。是不一样的。根据MDN文档,

元素属性innerHTML获取或设置元素中包含的HTML标记。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74001982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档