@@ -129,6 +129,13 @@ export function createPatchFunction (backend) {
129
129
return vnode . elm
130
130
}
131
131
132
+ function isPatchable ( vnode ) {
133
+ while ( vnode . child ) {
134
+ vnode = vnode . child . _vnode
135
+ }
136
+ return isDef ( vnode . tag )
137
+ }
138
+
132
139
function invokeCreateHooks ( vnode , insertedVnodeQueue ) {
133
140
for ( let i = 0 ; i < cbs . create . length ; ++ i ) {
134
141
cbs . create [ i ] ( emptyNode , vnode )
@@ -145,9 +152,11 @@ export function createPatchFunction (backend) {
145
152
insertedVnodeQueue . push . apply ( insertedVnodeQueue , vnode . data . pendingInsert )
146
153
}
147
154
vnode . elm = vnode . child . $el
148
- invokeCreateHooks ( vnode , insertedVnodeQueue )
149
- if ( vnode . child . _vnode . tag ) {
155
+ if ( isPatchable ( vnode ) ) {
156
+ invokeCreateHooks ( vnode , insertedVnodeQueue )
150
157
setScope ( vnode )
158
+ } else {
159
+ insertedVnodeQueue . push ( vnode )
151
160
}
152
161
}
153
162
@@ -322,7 +331,7 @@ export function createPatchFunction (backend) {
322
331
const elm = vnode . elm = oldVnode . elm
323
332
const oldCh = oldVnode . children
324
333
const ch = vnode . children
325
- if ( hasData ) {
334
+ if ( hasData && isPatchable ( vnode ) ) {
326
335
for ( i = 0 ; i < cbs . update . length ; ++ i ) cbs . update [ i ] ( oldVnode , vnode )
327
336
if ( isDef ( hook ) && isDef ( i = hook . update ) ) i ( oldVnode , vnode )
328
337
}
@@ -467,8 +476,10 @@ export function createPatchFunction (backend) {
467
476
// update parent placeholder node element.
468
477
if ( vnode . parent ) {
469
478
vnode . parent . elm = vnode . elm
470
- for ( let i = 0 ; i < cbs . create . length ; ++ i ) {
471
- cbs . create [ i ] ( emptyNode , vnode . parent )
479
+ if ( isPatchable ( vnode ) ) {
480
+ for ( let i = 0 ; i < cbs . create . length ; ++ i ) {
481
+ cbs . create [ i ] ( emptyNode , vnode . parent )
482
+ }
472
483
}
473
484
}
474
485
0 commit comments