@artsy/react-html-parser

中文文档
3.0.2发布于 2019/10/15MITCommonJS零依赖近 30 天下载 2.1万

将 HTML 分析为 React 组件

中文使用文档
文档目录5 节
  1. 安装
  2. 使用量
  3. API 密码
  4. function ReactHtmlParser(html, [options])
  5. function convertNodeToElement(node, index, transform)

反应 HTML 解析器

注:此Artsy分叉将 htmlparser2 依赖性替换为 DOMParser 由现代浏览器提供的API. 因此, 用于操作的节点的API略有不同.

将 HTML 字符串转换为工具 反应 组件。 避免使用危险的Set InnerHTML,将标准的HTML元素,属性和内置样式转换为它们的回放等效.

试试现场演示

Travis branch Coveralls npm Downloads David

安装

npm install @artsy/react-html-parser
# or
yarn add @artsy/react-html-parser

使用量

import React from 'react';
import ReactHtmlParser, {
  processNodes,
  convertNodeToElement
} from 'react-html-parser';

class HtmlComponent extends React.Component {
  render() {
    const html = '<div>Example HTML string</div>';
    return <div>{ReactHtmlParser(html)}</div>;
  }
}

API 密码

function ReactHtmlParser(html, [options])

使用 HTML 字符串并返回等同的反应元素

使用量

import ReactHtmlParser from 'react-html-parser';

参数

  • html: 要解析的 HTML 字符串
  • options选项对象
    • 转换 (职务): 应用到每个节点的变形函数
    • 预处理节点 (职务): 预处理由 DOMParser

变形函数

变换功能将被调用到每个由库解析的节点.

function transform(node, index)

参数
  • node:正在解析的节点. 这是平地 节点 编号 : 元素 以其他方式由浏览器生成.

返回类型

return null 返回无效会阻止节点 和它的所有的孩子.

function transform(node) {
  // do not render any <span> tags
  if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'SPAN') {
    return null;
  }
}

return undefined 如果函数不返回任何东西,或者返回未定义,那么默认行为将发生,解析器会继续是常见的.

return React element 反应元素可以直接返回

import React from 'react';
function transform(node) {
  if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'B') {
    return <div>This was a bold tag</div>;
  }
}

预处理节点函数

允许通过 html 预处理生成的节点 DOMParser 在传递到库后转换为React元素.

function preprocessNodes(nodes)

参数
  • nodes: 整个节点树由 DOMParser。 。 。 .
返回类型

这个 preprocessNodes 函数应返回一个有效的 DOMParser 节点树.

function convertNodeToElement(node, index, transform)

处理一个节点并返回要渲染的 React 元素。 此函数可以结合前述 transform 函数可以在修改后继续处理节点.

使用量

import { convertNodeToElement } from 'react-html-parser';

参数

  • node: 要处理的节点
  • index (数字): 与它为主的节点索引
  • transform:上述转变功能
import { convertNodeToElement } from 'react-html-parser';
function transform(node, index) {
  // convert <ul> to <ol>
  if (node.nodeType === Node.ELEMENT_NODE && node.tagName === 'UL') {
    node.name = 'ol';
    return convertNodeToElement(node, index, transform);
  }
}

版本与发布记录

@artsy/react-html-parser 共发布 3 个版本,首次发布于 2019/10/12;过去 12 个月发布了 0 个版本。

版本发布日期距今
3.0.2latest2019/10/157 年前
3.0.12019/10/147 年前
3.0.02019/10/127 年前

关于 @artsy/react-html-parser 的常见问题

@artsy/react-html-parser 是什么?

将 HTML 分析为 React 组件

如何安装 @artsy/react-html-parser?

在项目目录运行 npm install @artsy/react-html-parser,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^0.14.0 || ^15.0.0 || ^16.0.0-0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@artsy/react-html-parser 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/artsy__react-html-parser 是否存在。

@artsy/react-html-parser 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@artsy/react-html-parser 可以商用吗?

@artsy/react-html-parser 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@artsy/react-html-parser 的下载量有多少?

根据 npm 官方下载统计,@artsy/react-html-parser 在 2026/10/07 – 2026/11/05 这 30 天内被下载 20,647 次,日均约 688 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@artsy/react-html-parser 还在维护吗?

最新版本 3.0.2 发布于 2019/10/15(7 年前);至今共发布 3 个版本,其中过去 12 个月发布了 0 个;首次发布于 2019/10/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。