diff --git a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js index 6c58841469..a8ca4ba17b 100644 --- a/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js +++ b/packages/svelte/src/compiler/phases/3-transform/server/transform-server.js @@ -1392,13 +1392,8 @@ const template_visitors = { each.push(b.let(node.index, index)); } - // TODO we shouldn't need these - each.push(b.stmt(b.assignment('+=', b.id('$$payload.out'), b.literal('')))); - each.push(.../** @type {import('estree').BlockStatement} */ (context.visit(node.body)).body); - each.push(b.stmt(b.assignment('+=', b.id('$$payload.out'), b.literal('')))); - const for_loop = b.for( b.let(index, b.literal(0)), b.binary('<', index, b.member(array_id, b.id('length'))), diff --git a/packages/svelte/src/internal/client/dom/blocks/each.js b/packages/svelte/src/internal/client/dom/blocks/each.js index efc67b1d56..c3d83db8fe 100644 --- a/packages/svelte/src/internal/client/dom/blocks/each.js +++ b/packages/svelte/src/internal/client/dom/blocks/each.js @@ -181,10 +181,7 @@ export function each(anchor, flags, get_collection, get_key, render_fn, fallback var item; for (var i = 0; i < length; i++) { - if ( - child_anchor.nodeType !== 8 || - /** @type {Comment} */ (child_anchor).data !== '#each-item' - ) { + if (child_anchor.nodeType === 8 && /** @type {Comment} */ (child_anchor).data === '/each') { // If `nodes` is null, then that means that the server rendered fewer items than what // expected, so break out and continue appending non-hydrated items anchor = /** @type {Comment} */ (child_anchor); @@ -193,15 +190,13 @@ export function each(anchor, flags, get_collection, get_key, render_fn, fallback break; } - hydrate_next(); - var value = array[i]; var key = get_key(value, i); item = create_item(child_anchor, state, prev, null, value, key, i, render_fn, flags); state.items.set(key, item); var close = hydrate_node.nextSibling; // TODO validate. or replace `` with `` // hydrate_next(); - child_anchor = /** @type {Comment} */ (hydrate_next()); + child_anchor = /** @type {Comment} */ (hydrate_node); prev = item; } diff --git a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js index cad0914557..504e8cb4ee 100644 --- a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/server/index.svelte.js @@ -8,9 +8,7 @@ export default function Each_string_template($$payload) { for (let $$index = 0; $$index < each_array.length; $$index++) { const thing = each_array[$$index]; - $$payload.out += ""; $$payload.out += `${$.escape(thing)}, `; - $$payload.out += ""; } $$payload.out += ``;