You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在React组件动态设置文本时如何将内嵌HTML标签转为真实DOM元素

原因说明

React 默认会对所有插入到 JSX 中的字符串内容做 HTML 转义处理,目的是避免 XSS 注入攻击,所以你直接渲染包含 <a> 标签的字符串时,标签会被当成纯文本展示,不会被解析为真实的 DOM 元素。

解决方案

下面是三种常用的处理方案,可根据你的场景选择:

方案1:使用 React 原生的 dangerouslySetInnerHTML

这是最直接的方案,适合要渲染的HTML字符串来源完全可信的场景:

const text = "This is a piece of text with a <a href='替换为实际跳转地址'>link</a>";
// 注意要给a标签补充href属性,否则点击不会跳转
const Comp = () => {
  return <div dangerouslySetInnerHTML={{__html: text}} />;
};

注意:如果你的text内容来自用户输入、或者其他不可信的第三方来源,不要直接使用这个方案,有被注入恶意脚本的风险。

方案2:手动解析字符串生成React元素

如果只需要处理少量固定格式的标签,推荐用这种更安全的方式:

const text = "This is a piece of text with a <a>link</a>";
// 匹配<a>标签内容的正则
const linkReg = /<a>(.*?)<\/a>/g;

const Comp = () => {
  const contentParts = text.split(linkReg);
  return <div>
    {contentParts.map((part, idx) => {
      // 奇数序号的是匹配到的a标签内的文本
      if(idx % 2 === 1) {
        return <a key={idx} href="替换为实际跳转地址">{part}</a>
      }
      return part
    })}
  </div>
};

这种方式完全可控,不会存在XSS风险。

方案3:使用第三方HTML解析库

如果需要解析的标签类型多、逻辑复杂,可以用成熟的第三方库比如 html-react-parser,库本身已经做了XSS防护处理:

import parse from 'html-react-parser';

const text = "This is a piece of text with a <a href='替换为实际跳转地址'>link</a>";

const Comp = () => {
  return <div>{parse(text)}</div>;
};

内容的提问来源于stack exchange,提问作者Kazuto_Ute

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 10:39:02