Fix GC bug in reactive elements
This commit is contained in:
parent
ce416d994b
commit
c3f4c9432f
1 changed files with 2 additions and 1 deletions
|
@ -204,7 +204,7 @@ export class DomRenderer extends Renderer {
|
||||||
if (observable.value instanceof DocumentFragment) {
|
if (observable.value instanceof DocumentFragment) {
|
||||||
throw "Failed to create reactive element: Document fragments cannot be replaced dynamically"
|
throw "Failed to create reactive element: Document fragments cannot be replaced dynamically"
|
||||||
}
|
}
|
||||||
const element = this.toElement(observable.value)
|
const element = this.toElement(observable.value) || document.createComment("Reactive element Placeholder")
|
||||||
untilDeathDoThemPart(element, observable)
|
untilDeathDoThemPart(element, observable)
|
||||||
let ref = new WeakRef(element)
|
let ref = new WeakRef(element)
|
||||||
|
|
||||||
|
@ -217,6 +217,7 @@ export class DomRenderer extends Renderer {
|
||||||
if (element?.dispatchEvent(new BeforeReplaceEvent(next))) {
|
if (element?.dispatchEvent(new BeforeReplaceEvent(next))) {
|
||||||
element.replaceWith(next)
|
element.replaceWith(next)
|
||||||
next.dispatchEvent(new ReplacedEvent(element))
|
next.dispatchEvent(new ReplacedEvent(element))
|
||||||
|
untilDeathDoThemPart(next, observable)
|
||||||
element.dispatchEvent(new AfterReplaceEvent(next))
|
element.dispatchEvent(new AfterReplaceEvent(next))
|
||||||
ref = new WeakRef(next)
|
ref = new WeakRef(next)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue