diff --git a/src/compile/render-dom/wrappers/Element/index.ts b/src/compile/render-dom/wrappers/Element/index.ts index bd3baa3ad6..ebb7d8666e 100644 --- a/src/compile/render-dom/wrappers/Element/index.ts +++ b/src/compile/render-dom/wrappers/Element/index.ts @@ -540,7 +540,8 @@ export default class ElementWrapper extends Wrapper { } `); - block.builders.mount.addLine(`ctx.${name}(${this.var});`); + block.builders.mount.addLine(`@add_binding_callback(() => ctx.${name}(${this.var}));`); + block.builders.destroy.addLine(`ctx.${name}(null);`); } } diff --git a/src/compile/render-dom/wrappers/InlineComponent/index.ts b/src/compile/render-dom/wrappers/InlineComponent/index.ts index 9bf8e89610..9bc0e53b47 100644 --- a/src/compile/render-dom/wrappers/InlineComponent/index.ts +++ b/src/compile/render-dom/wrappers/InlineComponent/index.ts @@ -219,7 +219,8 @@ export default class InlineComponentWrapper extends Wrapper { } `); - return `ctx.${fn}(${this.var})`; + block.builders.destroy.addLine(`ctx.${fn}(null);`); + return `@add_binding_callback(() => ctx.${fn}(${this.var}));`; } component.has_reactive_assignments = true;