Skip to content

Commit

Permalink
Support Fragment in MDX files (#4136)
Browse files Browse the repository at this point in the history
* fix: Fragment for MDX files

* Update core.ts

* fix: better type guard for `render`

Co-authored-by: Nate Moore <nate@astro.build>
  • Loading branch information
natemoo-re and natemoo-re committed Aug 5, 2022
1 parent c56a922 commit 9afa461
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/strong-cars-wash.md
@@ -0,0 +1,5 @@
---
'astro': patch
---

Fix issue when using Fragment inside MDX
7 changes: 6 additions & 1 deletion packages/astro/src/core/render/core.ts
Expand Up @@ -10,7 +10,7 @@ import type {
} from '../../@types/astro';
import type { LogOptions } from '../logger/core.js';

import { renderPage } from '../../runtime/server/index.js';
import { renderPage, Fragment } from '../../runtime/server/index.js';
import { getParams } from '../routing/params.js';
import { createResult } from './result.js';
import { callGetStaticPaths, findPathItemByKey, RouteCache } from './route-cache.js';
Expand Down Expand Up @@ -157,6 +157,11 @@ export async function render(opts: RenderOptions): Promise<Response> {
if (typeof (mod as any).components === 'object') {
Object.assign(pageProps, { components: (mod as any).components });
}

// HACK: expose `Fragment` for all MDX components
if (typeof mod.default === 'function' && mod.default.name.startsWith('MDX')) {
Object.assign(pageProps, { components: Object.assign((pageProps?.components as any) ?? {}, { Fragment }) });
}

return await renderPage(result, Component, pageProps, null, streaming);
}

0 comments on commit 9afa461

Please sign in to comment.