Description
What problem does this feature solve?
I suddenly found out that vue2 <TransitionGroup/>
component transforms into <span/>
tag.
Vue2:
<TransitionGroup name="vue2" class="vue2-class">
<span key="1" class="class-1">1</span>
<span key="2" class="class-2">2</span>
</TransitionGroup>
compiles to
<span class="vue2-class">
<span class="class-1">1</span>
<span class="class-2">2</span>
</span>
Meanwhile vue3 <TransitionGroup/>
doesn't create element in DOM, so it breaks previous behaviour and old code.
Vue3:
<TransitionGroup name="vue3" class="vue3-class">
<span key="1" class="class-1">1</span>
<span key="2" class="class-2">2</span>
</TransitionGroup>
compiles to
<span class="class-1">1</span>
<span class="class-2">2</span>
Also Vue3:
<TransitionGroup name="vue3" class="vue3-class">
<span key="1" class="class-1">1</span>
</TransitionGroup>
compiles to
<span class="class-1 vue3-class">1</span>
It moves classes from <TransitionGroup/>
to single child.
What does the proposed API look like?
We should add this info to vue3 migration guide (maybe here: https://v3.vuejs.org/guide/migration/transition.html#overview)
The fastest way to migrate: wrap your <TransitionGroup/>
with new <span/>
:
Before:
<TransitionGroup name="vue2" class="vue2-class">
<span key="1" class="class-1">1</span>
<span key="2" class="class-2">2</span>
</TransitionGroup>
After:
<span class="vue3-class">
<TransitionGroup name="vue3">
<span key="1" class="class-1">1</span>
<span key="2" class="class-2">2</span>
</TransitionGroup>
</span>
UPD:
Checked vue2 docs: https://v3.vuejs.org/guide/transitions-list.html#list-transitions
And vue3 docs: https://v3.vuejs.org/guide/transitions-list.html#list-transitions
Unlike <transition>, it renders an actual element: a <span> by default. You can change the element that's rendered with the tag attribute.
So it looks like a vue3 <transition-group/>
bug. Or v3 docs are wrong.
The fastest way to fix your code: add tag="span"
to <transition-group/>