mdx-component.tsx
有时,新手会困惑于在哪里添加 MDX 组件。
虽然它只是简单地位于 page.tsx 中,不应该难找,但我认为某种约定可能会有帮助,所以我决定添加回 mdx-components.tsx。
我喜欢文件越少越好,但考虑到 create-fumadocs-app 也应该作为新手不熟悉 MDX 的起点,提供它作为默认选项会更有帮助。
现有项目
这个约定是可选的(仅用于使学习曲线更平滑)。 对于现有用户,您可能已经知道如何传递 MDX 组件,无需进一步更改。
但您仍然可以创建一个:
import defaultMdxComponents from 'fumadocs-ui/mdx';
import type { MDXComponents } from 'mdx/types';
export function getMDXComponents(components?: MDXComponents): MDXComponents {
return {
...defaultMdxComponents,
...components,
};
}并在您的 MDX 组件中使用它。
import { getMDXComponents } from '@/mdx-components';
<MDXContent
components={getMDXComponents({
// extend it
})}
/>;弃用 <I18nProvider />
我们现在更倾向于使用单一的 <RootProvider /> 来处理一切,用 i18n 属性替换了对 <I18nProvider /> 的需求。
<RootProvider
i18n={
// i18n provider props
}
>
{children}
</RootProvider>这允许 Root Provider 正确处理层次结构,而不会暴露过多复杂性,例如,正确的顺序应该是:
<FrameworkProvider>
<ThemesProvider>
<I18nProvider>
<SidebarProvider>
<SearchProvider>{children}</SearchProvider>
</SidebarProvider>
</I18nProvider>
</ThemesProvider>
</FrameworkProvider>更改不同提供者的层次结构可能会导致问题,因为它们实际上相互依赖,现在一切都集成到 <RootProvider /> 中,包括 I18n 配置。
新的国际化指南需要 Fumadocs 15.2.3 或更高版本。
Written by
Fuma Nama
At
Tue Apr 08 2025