@@ -15,6 +15,7 @@ import {
1515
1616import {
1717 resolveAsyncComponent ,
18+ createAsyncPlaceholder ,
1819 extractPropsFromVNodeData
1920} from './helpers/index'
2021
@@ -122,22 +123,24 @@ export function createComponent (
122123 return
123124 }
124125
126+ data = data || { }
127+
125128 // async component
129+ let asyncFactory
126130 if ( isUndef ( Ctor . cid ) ) {
127- Ctor = resolveAsyncComponent ( Ctor , baseCtor , context )
131+ asyncFactory = Ctor
132+ Ctor = resolveAsyncComponent ( asyncFactory , baseCtor , context )
128133 if ( Ctor === undefined ) {
129134 // return nothing if this is indeed an async component
130135 // wait for the callback to trigger parent update.
131- return
136+ return createAsyncPlaceholder ( asyncFactory , data . key )
132137 }
133138 }
134139
135140 // resolve constructor options in case global mixins are applied after
136141 // component constructor creation
137142 resolveConstructorOptions ( Ctor )
138143
139- data = data || { }
140-
141144 // transform component v-model data into props & events
142145 if ( isDef ( data . model ) ) {
143146 transformModel ( Ctor . options , data )
@@ -171,7 +174,8 @@ export function createComponent (
171174 const vnode = new VNode (
172175 `vue-component-${ Ctor . cid } ${ name ? `-${ name } ` : '' } ` ,
173176 data , undefined , undefined , undefined , context ,
174- { Ctor, propsData, listeners, tag, children }
177+ { Ctor, propsData, listeners, tag, children } ,
178+ asyncFactory
175179 )
176180 return vnode
177181}
0 commit comments