From ded8bfbbc3bcd474758cdfb46ad034e19a24dfef Mon Sep 17 00:00:00 2001 From: likui <2218301630@qq.com> Date: Sun, 3 May 2020 15:31:11 +0800 Subject: [PATCH 1/2] fix(transitionGroup): inner children should skip comment node fix: #1104 --- packages/runtime-dom/src/components/TransitionGroup.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/components/TransitionGroup.ts b/packages/runtime-dom/src/components/TransitionGroup.ts index aa8adf1437e..5c28c545731 100644 --- a/packages/runtime-dom/src/components/TransitionGroup.ts +++ b/packages/runtime-dom/src/components/TransitionGroup.ts @@ -110,7 +110,7 @@ const TransitionGroupImpl = { child, resolveTransitionHooks(child, cssTransitionProps, state, instance) ) - } else if (__DEV__ && child.type !== Comment) { + } else if (__DEV__) { warn(` children must be keyed.`) } } @@ -138,7 +138,9 @@ function getTransitionRawChildren(children: VNode[]): VNode[] { // handle fragment children case, e.g. v-for if (child.type === Fragment) { ret = ret.concat(getTransitionRawChildren(child.children as VNode[])) - } else { + } + // comment should be skip, e.g. v-if + if (child.type !== Comment) { ret.push(child) } } From 196772bb02bba8689f7301bc93603aa1d49601f5 Mon Sep 17 00:00:00 2001 From: likui <2218301630@qq.com> Date: Sun, 3 May 2020 16:22:52 +0800 Subject: [PATCH 2/2] fix(transitionGroup): returned vnode should be origin --- packages/runtime-dom/src/components/TransitionGroup.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/runtime-dom/src/components/TransitionGroup.ts b/packages/runtime-dom/src/components/TransitionGroup.ts index 5c28c545731..734ba69343f 100644 --- a/packages/runtime-dom/src/components/TransitionGroup.ts +++ b/packages/runtime-dom/src/components/TransitionGroup.ts @@ -101,7 +101,8 @@ const TransitionGroupImpl = { const cssTransitionProps = resolveTransitionProps(rawProps) const tag = rawProps.tag || Fragment prevChildren = children - children = getTransitionRawChildren(slots.default ? slots.default() : []) + const slotChildren = slots.default ? slots.default() : [] + children = getTransitionRawChildren(slotChildren) for (let i = 0; i < children.length; i++) { const child = children[i] @@ -126,7 +127,7 @@ const TransitionGroupImpl = { } } - return createVNode(tag, null, children) + return createVNode(tag, null, slotChildren) } } }