Support Fragment in MDX files (#4136)

* fix: Fragment for MDX files

* Update core.ts

* fix: better type guard for `render`

Co-authored-by: Nate Moore <nate@astro.build>
This commit is contained in:
Nate Moore 2022-08-05 17:16:34 -05:00 committed by GitHub
parent c56a9227c7
commit 9afa4611cb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 1 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
Fix issue when using Fragment inside MDX

View file

@ -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';
@ -158,5 +158,10 @@ export async function render(opts: RenderOptions): Promise<Response> {
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);
}