From b5e9b82e42eb9fc74adc9e2937f32a277d636cf0 Mon Sep 17 00:00:00 2001 From: ksh-code Date: Fri, 8 Jan 2021 11:46:27 +0900 Subject: [PATCH] refactor(factory): improve fallback multiple v-if close #11856 --- src/core/vdom/helpers/normalize-scoped-slots.js | 3 +-- .../component/component-scoped-slot.spec.js | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/core/vdom/helpers/normalize-scoped-slots.js b/src/core/vdom/helpers/normalize-scoped-slots.js index 1e43fd393f7..d1dd9690f6b 100644 --- a/src/core/vdom/helpers/normalize-scoped-slots.js +++ b/src/core/vdom/helpers/normalize-scoped-slots.js @@ -61,8 +61,7 @@ function normalizeScopedSlot(normalSlots, key, fn) { ? [res] // single vnode : normalizeChildren(res) return res && ( - res.length === 0 || - (res.length === 1 && res[0].isComment) // #9658 + res.every(r => r.isComment) // #9658, #11856 ) ? undefined : res } diff --git a/test/unit/features/component/component-scoped-slot.spec.js b/test/unit/features/component/component-scoped-slot.spec.js index 28369814f48..0c1e47f98f6 100644 --- a/test/unit/features/component/component-scoped-slot.spec.js +++ b/test/unit/features/component/component-scoped-slot.spec.js @@ -1294,6 +1294,19 @@ describe('Component scoped slot', () => { expect(vm.$el.textContent).toMatch('fallback') }) + //#11856 + it('fallback for scoped slot with multiple v-if', () => { + const vm = new Vue({ + template: ``, + components: { + Test: { + template: `
fallback
` + } + } + }).$mount() + expect(vm.$el.textContent).toEqual('fallback') + }) + // #9699 // Component only has normal slots, but is passing down $scopedSlots directly // $scopedSlots should not be marked as stable in this case