diff --git a/src/compiler/codegen/index.js b/src/compiler/codegen/index.js index d5b0aa09bd0..3416f773d8c 100644 --- a/src/compiler/codegen/index.js +++ b/src/compiler/codegen/index.js @@ -406,9 +406,7 @@ export function genChildren ( el.tag !== 'template' && el.tag !== 'slot' ) { - // because el may be a functional component and return an Array instead of a single root. - // In this case, just a simple normalization is needed - const normalizationType = state.maybeComponent(el) ? `,1` : `` + const normalizationType = checkSkip && state.maybeComponent(el) ? `,1` : `` return `${(altGenElement || genElement)(el, state)}${normalizationType}` } const normalizationType = checkSkip diff --git a/test/unit/modules/compiler/codegen.spec.js b/test/unit/modules/compiler/codegen.spec.js index 57caa60ada1..b3f5ba475c2 100644 --- a/test/unit/modules/compiler/codegen.spec.js +++ b/test/unit/modules/compiler/codegen.spec.js @@ -631,5 +631,13 @@ describe('codegen', () => { { isReservedTag } ) }) + + // #9142 + it('should compile single v-for component inside template', () => { + assertCodegen( + `
`, + `with(this){return _c('div',[(ok)?_l((1),function(i){return _c('foo',{key:i})}):_e()],2)}` + ) + }) }) /* eslint-enable quotes */