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

React TSX组件Props中HTML标签不生效的问题求解

解决TSX中HTML标签无法生效的问题

你遇到的问题是因为React默认会对字符串内容做转义处理,<strong>这类HTML标签会被当成普通文本渲染,不会解析成对应的页面元素。以下是不同场景的解决方法:

场景1:自定义组件(自己开发的myComponent)

如果myComponent是你自己写的,修改组件内部的渲染逻辑,用dangerouslySetInnerHTML解析HTML字符串:

// 组件定义
interface MyComponentProps {
  contents: string;
}

function MyComponent({ contents }: MyComponentProps) {
  return <div dangerouslySetInnerHTML={{ __html: contents }} />;
}

场景2:第三方组件

如果myComponent是第三方库提供的,先查组件文档看是否有支持HTML渲染的专属属性(比如htmlContent)。如果没有,就用容器元素包裹,通过dangerouslySetInnerHTML渲染内容:

<MyComponent>
  <div dangerouslySetInnerHTML={{ __html: `<strong>example</strong>` }} />
</MyComponent>

更安全的推荐方案

尽量避免直接传递HTML字符串,改用React元素传递,既符合React设计思路,又能避免安全风险:

// 使用组件时直接传React元素
<MyComponent contents={<strong>example</strong>} />

// 组件定义时接收ReactNode类型
interface MyComponentProps {
  contents: React.ReactNode;
}

function MyComponent({ contents }: MyComponentProps) {
  return <div>{contents}</div>;
}

重要提醒

dangerouslySetInnerHTML带有"dangerously"前缀是有原因的:如果HTML字符串包含未过滤的用户输入,可能引发XSS攻击。务必确保contents的内容是可信的,不要直接使用用户提交的原始内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 21:52:01