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

React中拼接含HTML标签的字符串未渲染为元素问题排查

问题原因及解决办法

问题根源

React出于安全考量(防范XSS攻击),会自动转义所有插入到JSX中的字符串内容。你拼接的带<strong>标签的字符串,会被React当作纯文本处理,不会被解析成对应的HTML元素,最终就出现了标签被原样显示的情况。

解决方式

有两种靠谱的处理方案:

1. 用JSX直接组合元素(推荐,更安全规范)

别用字符串拼接HTML标签,直接用JSX语法组合元素:

const fruitResult = 'There is no Colors for ';
const fruitResult1 = ' in the database.';
const fruitResult2 = 'No Data available.';

<div>
  <h2>
    {fruitSearch === '' 
      ? fruitResult2 
      : (
        <>
          {fruitResult}
          <strong>{fruitSearch}</strong>
          {fruitResult1}
        </>
      )
    }
  </h2>
</div>

这种方式完全符合React的开发逻辑,既安全又能正确渲染加粗效果。

2. 使用dangerouslySetInnerHTML(仅信任内容时用)

如果必须用字符串拼接的HTML内容,可以通过dangerouslySetInnerHTML让React解析HTML,但要注意:只有当你100%确定内容来源安全,不会被注入恶意代码时再用,否则会有XSS风险。

const fruitResult = 'There is no Colors for ';
const searchItem = `<strong>${fruitSearch}</strong>`;
const fruitResult1 = ' in the database.';
const fruitResult2 = 'No Data available.';

<div>
  <h2>
    {fruitSearch === '' 
      ? fruitResult2 
      : (
        <span dangerouslySetInnerHTML={{ __html: `${fruitResult} ${searchItem} ${fruitResult1}` }} />
      )
    }
  </h2>
</div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 10:55:21