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

将JSX元素转为字符串时,如何获取双引号而非"?

解决renderToStaticMarkup转义双引号的问题

renderToStaticMarkup会自动转义HTML特殊字符,导致双引号变为"(嵌套场景下会显示为"),以下两种方法可获取原始双引号:

  • 方法一:HTML实体解码
    借助浏览器的DOMParser API解析渲染后的HTML字符串,提取文本内容时自动解码所有HTML实体:

    import { renderToStaticMarkup } from "react-dom/server";
    
    export default function App() {
      var a = (
        <>
          {`Code "Sand" box.`} <br /> {`CodeSandbox`}
        </>
      );
      var b = renderToStaticMarkup(a);
      // 解码HTML实体
      const parser = new DOMParser();
      const doc = parser.parseFromString(b, 'text/html');
      const decodedB = doc.body.textContent;
      var c = (decodedB.charAt(0).toUpperCase() + decodedB.slice(1)).slice(0, 20) + "...";
    
      return (
        <div className="App">
          <h1>{c}</h1>
        </div>
      );
    }
    
  • 方法二:直接替换转义实体
    若仅需处理双引号,可直接用字符串替换将&quot;替换为原始双引号:

    import { renderToStaticMarkup } from "react-dom/server";
    
    export default function App() {
      var a = (
        <>
          {`Code "Sand" box.`} <br /> {`CodeSandbox`}
        </>
      );
      var b = renderToStaticMarkup(a).replace(/&quot;/g, '"');
      var c = (b.charAt(0).toUpperCase() + b.slice(1)).slice(0, 20) + "...";
    
      return (
        <div className="App">
          <h1>{c}</h1>
        </div>
      );
    }
    

注意:原代码中模板字符串内的&quot;无需手动编写,直接使用双引号"Sand"即可,renderToStaticMarkup会自动转义为HTML实体,后续通过上述方法还原即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:45:12