@@ -5417,6 +5417,16 @@ function renderNode (node, isRoot, context) {
5417
5417
}
5418
5418
}
5419
5419
5420
+ function registerComponentForCache ( options , write ) {
5421
+ // exposed by vue-loader, need to call this if cache hit because
5422
+ // component lifecycle hooks will not be called.
5423
+ var register = options . _ssrRegister ;
5424
+ if ( write . caching && isDef ( register ) ) {
5425
+ write . componentBuffer [ write . componentBuffer . length - 1 ] . add ( register ) ;
5426
+ }
5427
+ return register
5428
+ }
5429
+
5420
5430
function renderComponent ( node , isRoot , context ) {
5421
5431
var write = context . write ;
5422
5432
var next = context . next ;
@@ -5426,15 +5436,9 @@ function renderComponent (node, isRoot, context) {
5426
5436
var Ctor = node . componentOptions . Ctor ;
5427
5437
var getKey = Ctor . options . serverCacheKey ;
5428
5438
var name = Ctor . options . name ;
5429
-
5430
- // exposed by vue-loader, need to call this if cache hit because
5431
- // component lifecycle hooks will not be called.
5432
- var registerComponent = Ctor . options . _ssrRegister ;
5433
- if ( write . caching && isDef ( registerComponent ) ) {
5434
- write . componentBuffer [ write . componentBuffer . length - 1 ] . add ( registerComponent ) ;
5435
- }
5436
-
5437
5439
var cache = context . cache ;
5440
+ var registerComponent = registerComponentForCache ( Ctor . options , write ) ;
5441
+
5438
5442
if ( isDef ( getKey ) && isDef ( cache ) && isDef ( name ) ) {
5439
5443
var key = name + '::' + getKey ( node . componentOptions . propsData ) ;
5440
5444
var has = context . has ;
@@ -5508,7 +5512,6 @@ function renderComponentInner (node, isRoot, context) {
5508
5512
node ,
5509
5513
context . activeInstance
5510
5514
) ;
5511
- node . ssrContext = null ;
5512
5515
normalizeRender ( child ) ;
5513
5516
var childNode = child . _render ( ) ;
5514
5517
childNode . parent = node ;
@@ -5520,15 +5523,21 @@ function renderComponentInner (node, isRoot, context) {
5520
5523
}
5521
5524
5522
5525
function renderElement ( el , isRoot , context ) {
5526
+ var write = context . write ;
5527
+ var next = context . next ;
5528
+
5523
5529
if ( isTrue ( isRoot ) ) {
5524
5530
if ( ! el . data ) { el . data = { } ; }
5525
5531
if ( ! el . data . attrs ) { el . data . attrs = { } ; }
5526
5532
el . data . attrs [ SSR_ATTR ] = 'true' ;
5527
5533
}
5534
+
5535
+ if ( el . functionalOptions ) {
5536
+ registerComponentForCache ( el . functionalOptions , write ) ;
5537
+ }
5538
+
5528
5539
var startTag = renderStartingTag ( el , context ) ;
5529
5540
var endTag = "</" + ( el . tag ) + ">" ;
5530
- var write = context . write ;
5531
- var next = context . next ;
5532
5541
if ( context . isUnaryTag ( el . tag ) ) {
5533
5542
write ( startTag , next ) ;
5534
5543
} else if ( isUndef ( el . children ) || el . children . length === 0 ) {
0 commit comments