【发布时间】:2019-10-18 18:18:17
【问题描述】:
问题设计:如何在 react 项目中使用 prismjs 突出显示自定义语法?
我按照guide 创建了一个扩展语法文件(我们称之为newlang)。
而且我知道在 prismjs 中有三种高亮代码的方法:
highlightElement()highlightAll()highlight()
首先,我尝试在我的应用中要求我的自定义语法文件。
import 'utils/highlight/prism-newlang';
然后,在我的高亮组件中,
- 方法 1:
highlightElement():❌不能让我的代码突出显示
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():❌不能让我的代码突出显示 - 方法 3:
highlight():✅可以让我的代码突出显示
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的问题是什么。(会是自定义语法文件的加载顺序问题吗?)
【问题讨论】:
标签: javascript reactjs syntax-highlighting prismjs