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

如何让React SyntaxHighlighter实现多行代码原样展示

问题修复方案

导致代码仅能单行显示、和原始格式不一致的核心原因和修改方法如下:

  • 字符串传值格式错误:你当前用普通单引号包裹syntaxBlock内容,JavaScript 普通字符串不会保留字面量里的换行、缩进,需要替换为反引号包裹的模板字符串,才能完整保留原始书写格式。
  • SyntaxHighlighter配置不全:仅配置wrapLines无法触发长代码换行,需要额外补充wrapLongLines={true}参数;你展示的是JSX组件代码,建议将language改为jsx提升高亮匹配精度。

修改后传值代码:

<Showcase 
   class="w-full p-4 text-center m-auto space-x-2" 
   component={
          <>
            <Button variant="primary" text="Disabled Button" disabled />
            <Button variant="secondary" text="Disabled Button" disabled />
          </>
   } 
   syntaxBlock={`
          <Button variant="primary" text="Disabled Button" disabled />
          <Button variant="secondary" text="Disabled Button" disabled />
   `}
   title="Disabled" 
/>

修改后高亮渲染代码:

<SyntaxHighlighter 
  wrapLines={true} 
  wrapLongLines={true}
  language="jsx" 
  style={a11yDark} 
  showLineNumbers
>
  {props.syntaxBlock}
</SyntaxHighlighter>

可选优化(去除多余缩进)

如果修改后发现每行前置缩进过多、前后有多余空行,可以对传入的字符串做简单处理,根据你的实际缩进量调整正则里的空格数即可:

{props.syntaxBlock?.trim().replace(/^\s{10}/gm, '')}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:57:03