From 73ed7e2fd18dc288a8672fbcbc081c54c3ef038d Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Thu, 23 Nov 2023 12:39:44 +0000 Subject: [PATCH] better fix --- packages/svelte/src/internal/client/render.js | 11 +++++++---- packages/svelte/src/internal/client/runtime.js | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index 5008a29da0..1d0bca2c3e 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -1232,10 +1232,13 @@ export function bind_this(element_or_component, update, binding) { untrack(() => { update(element_or_component); render_effect(() => () => { - managed_render_effect(() => { - if (!is_signal(binding) || binding.v === element_or_component) { - update(null); - } + // Defer to the next tick so that all updates can be reconciled first. + render_effect(() => { + untrack(() => { + if (!is_signal(binding) || binding.v === element_or_component) { + update(null); + } + }); }); }); }); diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index db5cf7be30..e39530082b 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -945,6 +945,7 @@ function mark_signal_consumers(signal, to_status, force_schedule) { // effect. if ((flags & CLEAN) !== 0 || (dirty && unowned)) { if ((consumer.f & IS_EFFECT) !== 0) { + debugger schedule_effect(/** @type {import('./types.js').EffectSignal} */ (consumer), false); } else { mark_signal_consumers(consumer, MAYBE_DIRTY, force_schedule);