Skip to content

Commit 2482869

Browse files
committed
fix bug
1 parent 836569c commit 2482869

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

packages/svelte/src/internal/client/dom/blocks/each.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ function create_item(anchor, prev, next, value, key, index, render_fn, flags) {
489489
* @returns {import('#client').TemplateNode}
490490
*/
491491
function get_adjusted_first_node(dom, effect) {
492-
if (dom.nodeType === 3 && /** @type {Text} */ (dom).data === '') {
492+
if ((dom.nodeType === 3 && /** @type {Text} */ (dom).data === '') || dom.nodeType === 8) {
493493
var adjusted = effect.first;
494494
var next;
495495
while (adjusted !== null) {

packages/svelte/src/internal/client/dom/blocks/svelte-element.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,18 @@ export function element(node, get_tag, is_svg, render_fn, get_namespace, locatio
6262
/** @type {import('#client').Effect | null} */
6363
let effect;
6464

65+
const parent_effect = /** @type {import('#client').Effect} */ (current_effect);
66+
67+
// Remove the the hydrated effect dom entry for our dynamic element
68+
if (hydrating && is_array(parent_effect.dom)) {
69+
var remove_index = parent_effect.dom.indexOf(
70+
/** @type {import('#client').TemplateNode} */ (element)
71+
);
72+
if (remove_index !== -1) {
73+
parent_effect.dom.splice(remove_index, 1);
74+
}
75+
}
76+
6577
/**
6678
* The keyed `{#each ...}` item block, if any, that this element is inside.
6779
* We track this so we can set it when changing the element, allowing any
@@ -123,11 +135,10 @@ export function element(node, get_tag, is_svg, render_fn, get_namespace, locatio
123135
};
124136
}
125137

126-
if (prev_element) {
138+
if (prev_element && !hydrating) {
127139
swap_block_dom(element_effect, prev_element, element);
128140
prev_element.remove();
129-
}
130-
if (!hydrating) {
141+
} else {
131142
push_template_node(element, element_effect);
132143
}
133144

0 commit comments

Comments
 (0)