diff --git a/src/compile/render-dom/wrappers/Element/index.ts b/src/compile/render-dom/wrappers/Element/index.ts index 782f82f429..76fa9babd1 100644 --- a/src/compile/render-dom/wrappers/Element/index.ts +++ b/src/compile/render-dom/wrappers/Element/index.ts @@ -676,7 +676,10 @@ export default class ElementWrapper extends Wrapper { ); block.builders.destroy.addLine( - `if (${ref} === ${this.var}) ${ref} = null;` + `if (${ref} === ${this.var}) { + ${ref} = null; + #component.$$.inject_refs(#component.$$refs); + }` ); } diff --git a/src/compile/render-dom/wrappers/InlineComponent/index.ts b/src/compile/render-dom/wrappers/InlineComponent/index.ts index 0c72c3447d..35c328fe03 100644 --- a/src/compile/render-dom/wrappers/InlineComponent/index.ts +++ b/src/compile/render-dom/wrappers/InlineComponent/index.ts @@ -344,6 +344,7 @@ export default class InlineComponentWrapper extends Wrapper { ${this.node.ref && deindent` if (#component.$$refs.${this.node.ref.name} === ${name}) { #component.$$refs.${this.node.ref.name} = null; + #component.$$.inject_refs(#component.$$refs); }`} } } @@ -398,9 +399,14 @@ export default class InlineComponentWrapper extends Wrapper { `); } - block.builders.destroy.addLine(deindent` + block.builders.destroy.addBlock(deindent` ${name}.$destroy(${parentNode ? '' : 'detach'}); - ${this.node.ref && `if (#component.$$refs.${this.node.ref.name} === ${name}) #component.$$refs.${this.node.ref.name} = null;`} + ${this.node.ref && deindent` + if (#component.$$refs.${this.node.ref.name} === ${name}) { + #component.$$refs.${this.node.ref.name} = null; + #component.$$.inject_refs(#component.$$refs); + } + `} `); } diff --git a/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js b/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js index 1239d9d617..4a91eb77f3 100644 --- a/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js +++ b/test/runtime/samples/transition-js-if-block-outro-timeout/_config.js @@ -1,6 +1,4 @@ export default { - intro: true, - test(assert, component, target, window, raf) { component.visible = true; const div = target.querySelector('div');