2.6.11
https://codesandbox.io/embed/heuristic-brown-u7rvw?fontsize=14&hidenavigation=1&theme=dark
Click the tick box.
It should say "BLUE BOX" with a blue background colour.
It says "BLUE BOX" with no background colour.
The issue stems from the data-v-* attribute not being re-set for the blue_block div when it is swapped to. It is still using the data-v-* attribute of the child div in the functional component. Thus the CSS class styling does not apply.
Swapping from a functional component to something else is useful. E.g. When showing a simple loading bar component before swapping to a more complex component.
I think this may have something to do with how Vue recycles nodes during update. As a workaround, adding a key
to both the component and the div yields the expected behavior.
Might be related to https://github.com/vuejs/vue/issues/10416
test
Most helpful comment
I think this may have something to do with how Vue recycles nodes during update. As a workaround, adding a
key
to both the component and the div yields the expected behavior.