close
  • 中文
  • getCustomMDXComponent

    Warning

    该组件主要配合 自定义主题 中的 wrap/eject 使用 ,与 MDX 里直接导入使用的组件不同,你可以通过传递组件 props 或直接覆盖该组件达到修改样式和功能的目的。如果通过 eject 覆盖整个组件,需注意组件对应配置项的读取会失效,需要自行控制。

    getCustomMDXComponent 用于返回 Rspress 文档布局中渲染原生 Markdown 和 MDX 元素的默认组件。当你需要覆盖标题、链接、代码块、图片、表格等文档元素的渲染方式时,可以在自定义主题中使用它。

    用法

    在自定义主题中从 @rspress/core/theme-original 导入原始的 getCustomMDXComponent,然后导出一个同名函数:

    theme/index.tsx
    import { getCustomMDXComponent as getBasicCustomMDXComponent } from '@rspress/core/theme-original';
    
    function getCustomMDXComponent() {
      const mdxComponents = getBasicCustomMDXComponent();
      const { h1: H1, p: P } = mdxComponents;
    
      return {
        ...mdxComponents,
        h1: props => (
          <>
            <H1 {...props} />
            <P>below h1</P>
          </>
        ),
      };
    }
    
    export { getCustomMDXComponent };
    export * from '@rspress/core/theme-original';

    导出的 getCustomMDXComponent 会替换站点默认实现。Rspress 渲染文档内容时,会调用这个函数,并把返回的组件映射传给 MDX。上面的示例会保留默认 H1 渲染,并在每个 H1 下方额外渲染一段 below h1