fix(transition): toggling branches with in-out mode should be transitioned correctly (#3109)

fix #3104
This commit is contained in:
HcySunYang 2021-03-23 04:56:24 +08:00 committed by GitHub
parent b2e00f011a
commit 67a0290c0a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 8 deletions

View File

@ -247,14 +247,17 @@ describe('BaseTransition', () => {
})
describe('toggle on-off', () => {
async function testToggleOnOff({
trueBranch,
trueSerialized,
falseBranch,
falseSerialized
}: ToggleOptions) {
async function testToggleOnOff(
{
trueBranch,
trueSerialized,
falseBranch,
falseSerialized
}: ToggleOptions,
mode?: BaseTransitionProps['mode']
) {
const toggle = ref(true)
const { props, cbs } = mockProps()
const { props, cbs } = mockProps({ mode })
const root = mount(
props,
() => (toggle.value ? trueBranch() : falseBranch())
@ -322,6 +325,18 @@ describe('BaseTransition', () => {
falseSerialized: `<!---->`
})
})
test('w/ mode: "in-out', async () => {
await testToggleOnOff(
{
trueBranch: () => h('div'),
trueSerialized: `<div></div>`,
falseBranch: () => null,
falseSerialized: `<!---->`
},
'in-out'
)
})
})
describe('toggle on-off before finish', () => {

View File

@ -223,7 +223,7 @@ const BaseTransitionImpl = {
instance.update()
}
return emptyPlaceholder(child)
} else if (mode === 'in-out') {
} else if (mode === 'in-out' && innerChild.type !== Comment) {
leavingHooks.delayLeave = (
el: TransitionElement,
earlyRemove,