diff --git a/packages/svelte/src/internal/client/dom/blocks/key.js b/packages/svelte/src/internal/client/dom/blocks/key.js index 54d0d20713..07d138b15f 100644 --- a/packages/svelte/src/internal/client/dom/blocks/key.js +++ b/packages/svelte/src/internal/client/dom/blocks/key.js @@ -1,5 +1,4 @@ import { UNINITIALIZED } from '../../constants.js'; -import { remove } from '../reconciler.js'; import { block, branch, pause_effect } from '../../reactivity/effects.js'; import { safe_not_equal } from '../../reactivity/equality.js'; @@ -17,39 +16,13 @@ export function key_block(anchor, get_key, render_fn) { /** @type {import('#client').Effect} */ let effect; - /** - * Every time `key` changes, we create a new effect. Old effects are - * removed from this set when they have fully transitioned out - * @type {Set} - */ - let effects = new Set(); - - const key_effect = block(() => { + block(() => { if (safe_not_equal(key, (key = get_key()))) { if (effect) { - var e = effect; - pause_effect(e, () => { - effects.delete(e); - }); + pause_effect(effect); } - effect = branch(() => { - const dom = render_fn(anchor); - - return () => { - if (dom !== undefined) { - remove(dom); - } - }; - }); - - effects.add(effect); + effect = branch(() => render_fn(anchor)); } }); - - key_effect.ondestroy = () => { - for (const e of effects) { - if (e.dom) remove(e.dom); - } - }; }