fix: correctly ssr component in `svelte:head` with `$props.id()` or `css='injected'` (#15291)

pull/15292/head
Paolo Ricciuti 8 months ago committed by GitHub
parent 21dadfc997
commit b6bf735a23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: correctly ssr component in `svelte:head` with `$props.id()` or `css='injected'`

@ -34,7 +34,9 @@ export function copy_payload({ out, css, head, uid }) {
css: new Set(css), css: new Set(css),
head: { head: {
title: head.title, title: head.title,
out: head.out out: head.out,
css: new Set(head.css),
uid: head.uid
}, },
uid uid
}; };
@ -99,12 +101,13 @@ function props_id_generator() {
* @returns {RenderOutput} * @returns {RenderOutput}
*/ */
export function render(component, options = {}) { export function render(component, options = {}) {
const uid = options.uid ?? props_id_generator();
/** @type {Payload} */ /** @type {Payload} */
const payload = { const payload = {
out: '', out: '',
css: new Set(), css: new Set(),
head: { title: '', out: '' }, head: { title: '', out: '', css: new Set(), uid },
uid: options.uid ?? props_id_generator() uid
}; };
const prev_on_destroy = on_destroy; const prev_on_destroy = on_destroy;

@ -17,6 +17,8 @@ export interface Payload {
head: { head: {
title: string; title: string;
out: string; out: string;
uid: () => string;
css: Set<{ hash: string; code: string }>;
}; };
/** Function that generates a unique ID */ /** Function that generates a unique ID */
uid: () => string; uid: () => string;

@ -0,0 +1,5 @@
<script>
let id = $props.id();
</script>
<meta name="id" content={id} />

@ -0,0 +1,3 @@
import { test } from '../../test';
export default test({});

@ -0,0 +1,8 @@
<script>
import HeadNested from './HeadNested.svelte';
</script>
<svelte:head>
<HeadNested />
</svelte:head>
Loading…
Cancel
Save