@@ -30,6 +30,7 @@ function sameVnode (vnode1, vnode2) {
30
30
return (
31
31
vnode1 . key === vnode2 . key &&
32
32
vnode1 . tag === vnode2 . tag &&
33
+ vnode1 . isComment === vnode2 . isComment &&
33
34
! vnode1 . data === ! vnode2 . data
34
35
)
35
36
}
@@ -87,12 +88,7 @@ export function createPatchFunction (backend) {
87
88
// component also has set the placeholder vnode's elm.
88
89
// in that case we can just return the element and be done.
89
90
if ( isDef ( i = vnode . child ) ) {
90
- if ( vnode . data . pendingInsert ) {
91
- insertedVnodeQueue . push . apply ( insertedVnodeQueue , vnode . data . pendingInsert )
92
- }
93
- vnode . elm = vnode . child . $el
94
- invokeCreateHooks ( vnode , insertedVnodeQueue )
95
- setScope ( vnode )
91
+ initComponent ( vnode , insertedVnodeQueue )
96
92
return vnode . elm
97
93
}
98
94
}
@@ -127,6 +123,8 @@ export function createPatchFunction (backend) {
127
123
if ( isDef ( data ) ) {
128
124
invokeCreateHooks ( vnode , insertedVnodeQueue )
129
125
}
126
+ } else if ( vnode . isComment ) {
127
+ elm = vnode . elm = nodeOps . createComment ( vnode . text )
130
128
} else {
131
129
elm = vnode . elm = nodeOps . createTextNode ( vnode . text )
132
130
}
@@ -144,6 +142,15 @@ export function createPatchFunction (backend) {
144
142
}
145
143
}
146
144
145
+ function initComponent ( vnode , insertedVnodeQueue ) {
146
+ if ( vnode . data . pendingInsert ) {
147
+ insertedVnodeQueue . push . apply ( insertedVnodeQueue , vnode . data . pendingInsert )
148
+ }
149
+ vnode . elm = vnode . child . $el
150
+ invokeCreateHooks ( vnode , insertedVnodeQueue )
151
+ setScope ( vnode )
152
+ }
153
+
147
154
// set scope id attribute for scoped CSS.
148
155
// this is implemented as a special case to avoid the overhead
149
156
// of going through the normal attribute patching process.
@@ -360,7 +367,7 @@ export function createPatchFunction (backend) {
360
367
if ( isDef ( i = data . hook ) && isDef ( i = i . init ) ) i ( vnode , true /* hydrating */ )
361
368
if ( isDef ( i = vnode . child ) ) {
362
369
// child component. it should have hydrated its own tree.
363
- invokeCreateHooks ( vnode , insertedVnodeQueue )
370
+ initComponent ( vnode , insertedVnodeQueue )
364
371
return true
365
372
}
366
373
}
@@ -425,7 +432,7 @@ export function createPatchFunction (backend) {
425
432
// mounting to a real element
426
433
// check if this is server-rendered content and if we can perform
427
434
// a successful hydration.
428
- if ( oldVnode . hasAttribute ( 'server-rendered' ) ) {
435
+ if ( oldVnode . nodeType === 1 && oldVnode . hasAttribute ( 'server-rendered' ) ) {
429
436
oldVnode . removeAttribute ( 'server-rendered' )
430
437
hydrating = true
431
438
}
0 commit comments