Vue: Component disappears on first re-render

Created on 15 Aug 2017  ·  5Comments  ·  Source: vuejs/vue

Version

2.4.2

Reproduction link

http://jsfiddle.net/yMv7y/3265/

Steps to reproduce

On the JSFiddle, wait for the setTimeout on L15 to complete after two seconds.

What is expected?

For CustomElA to still be in the DOM.

What is actually happening?

CustomElA is removed from the DOM on re-render. However, it comes back on the third re-render (tested using setInterval instead of setTimeout on JSFiddle on L16).


The JSfiddle is using Vue v2.4.0 but I have verified the bug on v2.4.2 locally.

bug

Most helpful comment

Looks like a bug, thanks for reporting it. Looks like it was introduced in 2.1.4. It looks like the problem happens during the patch of vnodes though.

edit: looks like _isDestroyed is false at init during vnode patch, making it not to call mount and disappearing from the node tree

All 5 comments

Looks like a bug, thanks for reporting it. Looks like it was introduced in 2.1.4. It looks like the problem happens during the patch of vnodes though.

edit: looks like _isDestroyed is false at init during vnode patch, making it not to call mount and disappearing from the node tree

This is fixed, but do note that because you are changing the element wrapping the slots, the element is considered "replaced" and thus all slot content, including the components in it, will be destroyed and then re-created. This is unfortunately how the vdom patching works and unlikely to change.

@yyx990803
Sounds good, thanks. Do you have a ballpark date for the next release?

Also wondering about when the next release will occur, or, in the mean-time, is there a way to install this version? Thanks.

@Tolmark12 clone the repo, build the files and run npm link to use the local version of vue 😉 (those are very rough instructions)

Was this page helpful?
0 / 5 - 0 ratings