我尝试在一个react项目中使用PrimsJs,我的目标是创建一个静态模板页面,并添加代码片段,我不确定是否是最佳选项(primsJs),但我尝试自动缩进代码,因为实际上我的代码在一行中呈现
这是我的主页
import { MainLayout } from "../components/layouts/MainLayout";
import { Hero1, Hero1Code} from "../theme/blocks/hero/Hero1";
export default function Home() {
return (
<MainLayout>
<h1>Home Page</h1>
<Hero1 />
<Hero1Code />
</MainLayout>
);
}
这是我的PRIMSJS组件
import React, { useEffect } from "react";
import Prism from "prismjs";
import "prismjs/themes/prism-tomorrow.css";
export default function Code({ code, language }) {
useEffect(() => {
Prism.highlightAll();
}, []);
return (
<div className="Code">
<pre>
<code className={`language-${language}`}>{code}</code>
</pre>
</div>
);
}
这是我的组件
import React from "react";
import { renderToString } from "react-dom/server";
import Code from "../../../components/prism/code";
export const Hero1 = () => {
return (
<section className="wrapper bg-light">
...
</section>
);
};
export const Hero1Code = () => {
const content = renderToString(<Hero1/>);
return (
<>
<div className="App">
<Code code={content} language="html" />
</div>
</>
);
};
型
任何帮助将是非常欢迎的,我也开放尝试其他包
1条答案
按热度按时间t5zmwmid1#
我不认为PrismJS有这样的选项,在我看来,最好在将
code
字符串传递给<Code />
组件之前将其缩进。您可以使用此库:https://github.com/zebzhao/indent.js
导入:
并像这样缩进代码:
但是,看一下截图代码示例,我可以看到有很多
div
被压缩到一行中,在这种情况下,缩进并没有真正的帮助,因为它照顾到了各行之间的关系。您可以看看如何使用这样的库,它似乎将代码拆分为单独的行。
https://www.npmjs.com/package/pretty