diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index f563f6d099da..3cf2ca7c4849 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -185,7 +185,7 @@ export function append_hydration(target: NodeEx, node: NodeEx) { } else { target.actual_end_child = node.nextSibling; } - } else if (node.parentNode !== target) { + } else if (node.parentNode !== target || node.nextSibling !== null) { target.appendChild(node); } } diff --git a/test/runtime/samples/key-block-post-hydrate/_config.js b/test/runtime/samples/key-block-post-hydrate/_config.js new file mode 100644 index 000000000000..e989d678e948 --- /dev/null +++ b/test/runtime/samples/key-block-post-hydrate/_config.js @@ -0,0 +1,19 @@ +export default { + html: ` +
+
item 1something
+
item 2something
+
item 3something
+
+ `, + test({ assert, component, target }) { + component.sortById = false; + assert.htmlEqual( target.innerHTML, ` +
+
item 3something
+
item 2something
+
item 1something
+
+ `); + } +}; diff --git a/test/runtime/samples/key-block-post-hydrate/main.svelte b/test/runtime/samples/key-block-post-hydrate/main.svelte new file mode 100644 index 000000000000..8ea316a0d7aa --- /dev/null +++ b/test/runtime/samples/key-block-post-hydrate/main.svelte @@ -0,0 +1,23 @@ + + +
+ {#each items as item (item.id)} +
+ {#if item.name} + + {item.name} + + {/if} + something +
+ {/each} +