MDX 和 React
Docusaurus 原生支持 MDX v2,可以直接在 Markdown 文档中编写 JSX,并把渲染为 React 组件。
请查看MDX文档,了解您可以使用MDX做些什么有趣的事情。
:::提示 调试MDX
MDX格式是相当严格的,您可能会遇到编译错误。
使用**MDX playground**来调试并确保您的语法是有效的。
:::
信息
Prettier, 最受欢迎的格式, 仅支持遗留的 MDX v1 If you get an unintentional formatting result, you may want to add {/* prettier-ignore */}
before the problematic area, or add *.mdx
to your .prettierignore
, until Prettier has proper support for MDX v3. One of the main authors of MDX recommends remark-cli
with remark-mdx
.
导出组件
要在MDX文件中定义任何自定义组件,您必须将其导出:只有以export
开头的段落才会被解析为组件,而非普通文本。
export const Highlight = ({children, color}) => (
<span
style={{
backgroundColor: color,
borderRadius: '2px',
color: '#fff',
padding: '0.2rem',
}}>
{children}
</span>
);
<Highlight color="#25c2a0">Docusaurus 绿</Highlight> 和 <Highlight color="#1877F2">Facebook 蓝</Highlight> 是我最喜欢的颜色。
我可以把我的 _JSX_ 和 **Markdown** 写在一起!
注意它是怎么同时渲染 React 组件和 Markdown 语法的:
http://localhost:3000
Docusaurus green
and Facebook blue are my favorite colors.
I can write Markdown alongside my JSX!
MDX is JSX
由于所有文档文件都是使用MDX解析的,任何看起来像HTML的内容实际上是JSX语法。 因此,如果您需要对组件进行内联样式处理,请遵循JSX风格,并提供样式对象。
/* 不要这么写: */
<span style="background-color: red">Foo</span>
/* 要这么写: */
<span style={{backgroundColor: 'red'}}>Foo</span>