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

React中如何获取p标签内容?不使用dangerouslySetInnerHTML方法

解决方案

要提取该对象中p标签的内容并通过props渲染,且不使用dangerouslySetInnerHTML,可以按以下步骤实现:

1. 解码HTML实体并提取文本

首先需要把转义的HTML字符串(比如<p>)转换成可解析的内容,再提取p标签内的纯文本。可以借助浏览器原生的DOMParser来安全完成这个操作:

// 定义提取p标签文本的工具函数
function getPTagContent(htmlStr) {
  const parser = new DOMParser();
  const doc = parser.parseFromString(htmlStr, 'text/html');
  const pElement = doc.querySelector('p');
  // 存在p标签则返回文本,否则返回空字符串
  return pElement ? pElement.textContent.trim() : '';
}

// 你的原始数据
let content = {
  para: `<p>A listing page is the public view of a listing. It should display all relevant information about a listing.</p>`
};

// 提取p标签内的文本
const paragraphText = getPTagContent(content.para);

2. 通过props传递并渲染

拿到纯文本后,直接通过props传递给组件渲染即可,因为是纯文本,无需使用危险的HTML渲染方法:

// 父组件
function Parent() {
  const paragraphText = getPTagContent(content.para);
  return <Child text={paragraphText} />;
}

// 子组件
function Child({ text }) {
  // 直接渲染纯文本
  return <div>{text}</div>;
}

原理说明

  • DOMParser会将转义后的HTML字符串解析成真实的DOM结构,我们可以通过DOM API(querySelector、textContent)安全提取文本内容。
  • 最终渲染的是纯文本,不存在XSS风险,也完全符合不使用dangerouslySetInnerHTML的要求。

内容的提问来源于stack exchange,提问作者Arsalan Ali Khattak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:55:36