问题 Desp:如何在 react 项目中使用 prismjs 突出显示自定义语法?
我按照指南newlang
创建了一个扩展语法文件(我们称之为)。
而且我知道在 prismjs 中有三种方法可以突出显示代码:
highlightElement()
highlightAll()
highlight()
首先,我尝试在我的应用程序中要求我的自定义语法文件。
import 'utils/highlight/prism-newlang';
然后,在我的高亮组件中,
- 方法 1:
highlightElement()
: ❌<strong>无法突出显示我的代码
import Prism from 'prismjs';
function CodeHighlight({ value, language }) {
const codeEle = useRef(null);
useEffect(() => {
Prism.highlightElement(codeEle.current, false);
}, []);
return (
<pre className={`language-${language}`}>
<code ref={codeEle} className={`language-${language}`}>
{value}
</code>
</pre>
);
}
- 方法 2:
highlightAll()
: ❌<strong>无法突出显示我的代码 - 方法 3:
highlight()
: ✅<strong>可以让我的代码突出显示
import { highlight, languages } from 'prismjs/components/prism-core';
function CodeHighlight({ value, language }) {
const codeNode = useRef(null);
useEffect(() => {
const code = codeNode.current.textContent;
const highlightHTML = highlightCode(code, language);
codeNode.current.innerHTML = highlightHTML;
});
return (
<pre className={`language-${language}`}>
<code ref={codeNode} className={`language-${language}`}>
{value}
</code>
</pre>
);
}
我想知道方法1和2的问题是什么。(会是自定义语法文件的加载顺序问题吗?)