引入了 Prism.js 来实现代码高亮。
Prism 只能对已经渲染出来的 DOM 做高亮处理,因此在 React 页面里,需要在 DOM 渲染出来之后,再执行 Prism.js 的代码。
把 Prism.js 的代码包在一个函数里,在指定的时机执行它。
// execPrism.js
export default function execPrism() {
// ... Prism.js 的代码 ...
}
在页面 DOM 渲染完成后,再执行 Prism.js 的代码。对于函数组件可以使用 useEffect()
,对于 class 组件可以使用 componentDidMount()
。
// page.js 页面组件
import { useEffect } from 'react';
import execPrism from './execPrism';
export default function Page() {
useEffect(() => {
execPrism();
}, []);
return (
// 文章内容,由 markdown 转为 HTML,其中包含了代码块
<div dangerouslySetInnerHTML={{ __html: content }} />
)
}