Skip to content

Commit a2c2a92

Browse files
author
wh.huajieyu
committed
fix(BaseTransition): modify review problem
1 parent a0ad5c5 commit a2c2a92

File tree

3 files changed

+78
-68
lines changed

3 files changed

+78
-68
lines changed

packages/runtime-core/src/components/BaseTransition.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ const BaseTransitionImpl: ComponentOptions = {
225225
oldInnerChild &&
226226
oldInnerChild.type !== Comment &&
227227
instance.vnode.el &&
228-
instance.vnode.el.nodeName !== '#comment' &&
228+
instance.vnode.el.nodeType !== 8 &&
229229
(!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)
230230
) {
231231
const leavingHooks = resolveTransitionHooks(

packages/vue/__tests__/e2e/Transition.spec.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,6 +1142,83 @@ describe('e2e: Transition', () => {
11421142

11431143
test(
11441144
'transition on child components with empty root node',
1145+
async () => {
1146+
await page().evaluate(() => {
1147+
const { createApp, ref } = (window as any).Vue
1148+
createApp({
1149+
template: `
1150+
<div id="container">
1151+
<transition name="test">
1152+
<component class="test" :is="view"></component>
1153+
</transition>
1154+
</div>
1155+
<button id="toggleBtn" @click="click">button</button>
1156+
<button id="changeViewBtn" @click="change">button</button>
1157+
`,
1158+
components: {
1159+
one: {
1160+
template: '<div v-if="false">one</div>'
1161+
},
1162+
two: {
1163+
template: '<div>two</div>'
1164+
}
1165+
},
1166+
setup: () => {
1167+
const toggle = ref(true)
1168+
const view = ref('one')
1169+
const click = () => (toggle.value = !toggle.value)
1170+
const change = () =>
1171+
(view.value = view.value === 'one' ? 'two' : 'one')
1172+
return { toggle, click, change, view }
1173+
}
1174+
}).mount('#app')
1175+
})
1176+
expect(await html('#container')).toBe('<!--v-if-->')
1177+
1178+
// change view -> 'two'
1179+
await page().evaluate(() => {
1180+
;(document.querySelector('#changeViewBtn') as any)!.click()
1181+
})
1182+
// enter
1183+
expect(await classWhenTransitionStart()).toStrictEqual([
1184+
'test',
1185+
'test-enter-from',
1186+
'test-enter-active'
1187+
])
1188+
await nextFrame()
1189+
expect(await classList('.test')).toStrictEqual([
1190+
'test',
1191+
'test-enter-active',
1192+
'test-enter-to'
1193+
])
1194+
await transitionFinish()
1195+
expect(await html('#container')).toBe('<div class="test">two</div>')
1196+
1197+
// change view -> 'one'
1198+
await page().evaluate(() => {
1199+
;(document.querySelector('#changeViewBtn') as any)!.click()
1200+
})
1201+
// leave
1202+
expect(await classWhenTransitionStart()).toStrictEqual([
1203+
'test',
1204+
'test-leave-from',
1205+
'test-leave-active'
1206+
])
1207+
await nextFrame()
1208+
expect(await classList('.test')).toStrictEqual([
1209+
'test',
1210+
'test-leave-active',
1211+
'test-leave-to'
1212+
])
1213+
await transitionFinish()
1214+
expect(await html('#container')).toBe('<!--v-if-->')
1215+
},
1216+
E2E_TIMEOUT
1217+
)
1218+
1219+
// issue https://github.com/vuejs/core/issues/7649
1220+
test(
1221+
'transition with v-if at component root-level',
11451222
async () => {
11461223
await page().evaluate(() => {
11471224
const { createApp, ref } = (window as any).Vue

packages/vue/examples/transition/transition_v-if.html

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)