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

React.js中使用Highlight.js语法高亮失效问题求助

解决React中highlight.js语法高亮不生效的问题

你的问题核心在于React默认会转义插入的字符串内容:hljs.highlightAuto(test).value返回的是带有高亮span标签的HTML字符串,但直接放在JSX里会被当成纯文本渲染,不会解析成实际的DOM元素,自然看不到高亮效果。

修复方案

  1. 使用React的dangerouslySetInnerHTML属性插入原始HTML内容
  2. 必须引入highlight.js的样式文件(否则即使生成了span标签,也没有高亮样式)

修改后的代码如下:

import React from "react";
import hljs from "highlight.js";
// 引入高亮样式,这里用github主题,可替换成其他主题如monokai、atom-one-dark等
import "highlight.js/styles/github.css";

const test = `const test = require('test')`;
const highlightedCode = hljs.highlightAuto(test).value;

function App() {
  return (
    <>
      <pre>
        <code dangerouslySetInnerHTML={{ __html: highlightedCode }} />
      </pre>
    </>
  );
}

export default App;

额外提示

  • dangerouslySetInnerHTML是React专门用于插入原始HTML的属性,命名里的"dangerously"是提醒你:确保插入的HTML内容是安全的(避免XSS风险)。
  • 如果明确知道代码的语言类型,建议用hljs.highlight指定语言(比如hljs.highlight(test, { language: 'javascript' })),比highlightAuto的识别更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 12:45:46