Skip to content

Commit 317de4a

Browse files
committed
alternative approach
1 parent 8392fa0 commit 317de4a

File tree

2 files changed

+7
-22
lines changed

2 files changed

+7
-22
lines changed

packages/svelte/src/internal/client/hydration.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// Handle hydration
22

3+
import { schedule_task } from './runtime';
4+
35
/** @type {null | Array<Text | Comment | Element>} */
46
export let current_hydration_fragment = null;
57

@@ -68,6 +70,11 @@ export function hydrate_block_anchor(anchor_node, is_controlled) {
6870
let fragment = target_node.$$fragment;
6971
if (fragment === undefined) {
7072
fragment = get_hydration_fragment(target_node);
73+
} else {
74+
schedule_task(() => {
75+
// @ts-expect-error clean up memory
76+
target_node.$$fragment = undefined;
77+
});
7178
}
7279
set_current_hydration_fragment(fragment);
7380
} else {

packages/svelte/src/internal/client/render.js

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,6 @@ function close_template(dom, is_fragment, anchor) {
213213
if (anchor !== null) {
214214
if (current_hydration_fragment === null) {
215215
insert(current, null, anchor);
216-
} else {
217-
cleanup_hyration_node(anchor);
218216
}
219217
}
220218
block.d = current;
@@ -1344,20 +1342,6 @@ export function slot(anchor_node, slot_fn, slot_props, fallback_fn) {
13441342
} else {
13451343
slot_fn(anchor_node, slot_props);
13461344
}
1347-
cleanup_hyration_node(anchor_node);
1348-
}
1349-
1350-
/**
1351-
*
1352-
* @param {Element | Comment} node
1353-
*/
1354-
function cleanup_hyration_node(node) {
1355-
// Let's ensure we don't leak the hydration fragment
1356-
// @ts-expect-error internal field
1357-
if (node.$$fragment) {
1358-
// @ts-expect-error internal field
1359-
node.$$fragment = undefined;
1360-
}
13611345
}
13621346

13631347
/**
@@ -1489,7 +1473,6 @@ function if_block(anchor_node, condition_fn, consequent_fn, alternate_fn) {
14891473
destroy_signal(alternate_effect);
14901474
});
14911475
block.e = if_effect;
1492-
cleanup_hyration_node(anchor_node);
14931476
}
14941477
export { if_block as if };
14951478

@@ -1633,7 +1616,6 @@ export function element(anchor_node, tag_fn, render_fn, is_svg = false) {
16331616
}
16341617
destroy_signal(render_effect_signal);
16351618
});
1636-
cleanup_hyration_node(anchor_node);
16371619
block.e = element_effect;
16381620
}
16391621

@@ -1751,7 +1733,6 @@ export function component(anchor_node, component_fn, render_fn) {
17511733
render = render.p;
17521734
}
17531735
});
1754-
cleanup_hyration_node(anchor_node);
17551736
block.e = component_effect;
17561737
}
17571738

@@ -1919,7 +1900,6 @@ function await_block(anchor_node, input, pending_fn, then_fn, catch_fn) {
19191900
render = render.p;
19201901
}
19211902
});
1922-
cleanup_hyration_node(anchor_node);
19231903
block.e = await_effect;
19241904
}
19251905
export { await_block as await };
@@ -2036,7 +2016,6 @@ export function key(anchor_node, key, render_fn) {
20362016
render = render.p;
20372017
}
20382018
});
2039-
cleanup_hyration_node(anchor_node);
20402019
block.e = key_effect;
20412020
}
20422021

@@ -2292,7 +2271,6 @@ function each(anchor_node, collection, flags, key_fn, render_fn, fallback_fn, re
22922271
reconcile_fn([], block, anchor_node, is_controlled, render_fn, flags, false, keys);
22932272
destroy_signal(/** @type {import('./types.js').EffectSignal} */ (render));
22942273
});
2295-
cleanup_hyration_node(anchor_node);
22962274
block.e = each;
22972275
}
22982276

0 commit comments

Comments
 (0)