Skip to main content

HTML 渲染 RenderDom

RenderDom 是一个用于安全渲染 HTML 字符串的 React 组件。通过 dangerouslySetInnerHTML 渲染外部或动态生成的 HTML,同时自动去除 <script> 标签,避免潜在的 XSS 攻击。


📦 引入方式

import { RenderDom } from '@npmqg/react-ui-renderdom';

🧩 使用示例

📚 基础用法

Hello World!

🧩 Props

Prop 名称类型默认值描述
domstring''需要被渲染的 HTML 字符串内容
classNamestring''自定义的样式类名,追加到组件容器上
styleReact.CSSProperties{}内联样式对象,传递给最外层容器元素

🔐 安全注意事项

⚠️ 该组件默认会将所有 <script> 标签从 dom 字符串中移除,避免常见的 XSS 注入攻击。但 这不是 100% 安全的 HTML 清洗方式,如有严格的安全要求,建议引入专门的 HTML Sanitizer(如 DOMPurify)。

// 默认行为,移除所有 <script> 标签
dom?.replace(/<script>/g, '');

你可以根据项目需要自行扩展更安全的过滤规则或使用更强健的库。


🧠 设计思路

  • 使用 React.memo 包裹组件,减少重复渲染,提高性能。
  • 使用 clsx 动态拼接类名,支持传入外部样式类。

🎯 示例场景

  • 富文本编辑器展示 HTML 预览结果
  • Markdown 转 HTML 后的渲染
  • CMS 系统中从服务端返回的 HTML 内容渲染
  • 第三方插件或服务返回的嵌入 HTML 渲染