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

React中解析含strong/em标签的HTML字符串失效,求解决方案

问题解决:React中渲染HTML字符串时strong/em标签不生效

你的问题出在HTML字符串是HTML实体编码后的格式(比如用&lt;代替<,&gt;代替>),不管用dangerouslySetInnerHTML还是html-react-parser,都会把这些实体当成普通文本解析,而非实际的HTML标签,自然不会触发strong/em的样式。

解决步骤:先解码HTML实体

先把转义后的字符串还原成真实的HTML标签字符串,再进行渲染。可以用下面的解码函数:

function decodeHtmlEntities(html) {
  const parser = new DOMParser();
  const doc = parser.parseFromString(html, 'text/html');
  return doc.documentElement.textContent;
}

修改方案1(dangerouslySetInnerHTML):

const textHtml = '&lt;p&gt;Test&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Test&lt;/em&gt;&lt;/p&gt;';
const decodedHtml = decodeHtmlEntities(textHtml);

return (
  <div>
    <div dangerouslySetInnerHTML={{ __html: decodedHtml }} />
  </div>
);

修改方案2(html-react-parser):

import parse from 'html-react-parser';

const textHtml = '&lt;p&gt;Test&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Test&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Test&lt;/em&gt;&lt;/p&gt;';
const decodedHtml = decodeHtmlEntities(textHtml);

return (
  <div>
    <div>{parse(decodedHtml)}</div>
  </div>
);

额外建议

如果这段HTML是后端返回的,最好让后端直接返回未转义的原始HTML字符串,这样前端可以省去解码步骤,直接渲染即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 21:35:11