@@ -12,7 +12,8 @@ export function createComponent (
1212 Ctor : Class < Component > | Function | Object | void ,
1313 data ?: VNodeData ,
1414 parent : Component ,
15- context : Component
15+ context : Component ,
16+ tag ?: string
1617) : VNode | void {
1718 if ( ! Ctor ) {
1819 return
@@ -62,11 +63,11 @@ export function createComponent (
6263 }
6364
6465 // return a placeholder vnode
65- const name = Ctor . options . name ? ( '-' + Ctor . options . name ) : ''
66+ const name = Ctor . options . name || tag
6667 const vnode = new VNode (
67- `vue-component-${ Ctor . cid } ${ name } ` ,
68+ `vue-component-${ Ctor . cid } ${ name ? `- ${ name } ` : '' } ` ,
6869 data , undefined , undefined , undefined , undefined , context ,
69- { Ctor, propsData, listeners, parent, children : undefined }
70+ { Ctor, propsData, listeners, parent, tag , children : undefined }
7071 // children to be set later by renderElementWithChildren,
7172 // but before the init hook
7273 )
@@ -76,22 +77,23 @@ export function createComponent (
7677export function createComponentInstanceForVnode (
7778 vnode : any // we know it's MountedComponentVNode but flow doesn't
7879) : Component {
79- const { Ctor , propsData , listeners , parent , children } = vnode . componentOptions
80+ const vnodeComponentOptions = vnode . componentOptions
8081 const options : InternalComponentOptions = {
8182 _isComponent : true ,
82- parent,
83- propsData,
83+ parent : vnodeComponentOptions . parent ,
84+ propsData : vnodeComponentOptions . propsData ,
85+ _componentTag : vnodeComponentOptions . tag ,
8486 _parentVnode : vnode ,
85- _parentListeners : listeners ,
86- _renderChildren : children
87+ _parentListeners : vnodeComponentOptions . listeners ,
88+ _renderChildren : vnodeComponentOptions . children
8789 }
8890 // check inline-template render functions
8991 const inlineTemplate = vnode . data . inlineTemplate
9092 if ( inlineTemplate ) {
9193 options . render = inlineTemplate . render
9294 options . staticRenderFns = inlineTemplate . staticRenderFns
9395 }
94- return new Ctor ( options )
96+ return new vnodeComponentOptions . Ctor ( options )
9597}
9698
9799function init ( vnode : VNode ) {
0 commit comments