Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
81158 views
1
/**
2
* Copyright 2013-2014, Facebook, Inc.
3
* All rights reserved.
4
*
5
* This source code is licensed under the BSD-style license found in the
6
* LICENSE file in the root directory of this source tree. An additional grant
7
* of patent rights can be found in the PATENTS file in the same directory.
8
*
9
* @typechecks static-only
10
* @providesModule ReactServerRendering
11
*/
12
"use strict";
13
14
var ReactElement = require('ReactElement');
15
var ReactInstanceHandles = require('ReactInstanceHandles');
16
var ReactMarkupChecksum = require('ReactMarkupChecksum');
17
var ReactServerRenderingTransaction =
18
require('ReactServerRenderingTransaction');
19
20
var instantiateReactComponent = require('instantiateReactComponent');
21
var invariant = require('invariant');
22
23
/**
24
* @param {ReactElement} element
25
* @return {string} the HTML markup
26
*/
27
function renderToString(element) {
28
invariant(
29
ReactElement.isValidElement(element),
30
'renderToString(): You must pass a valid ReactElement.'
31
);
32
33
var transaction;
34
try {
35
var id = ReactInstanceHandles.createReactRootID();
36
transaction = ReactServerRenderingTransaction.getPooled(false);
37
38
return transaction.perform(function() {
39
var componentInstance = instantiateReactComponent(element, null);
40
var markup = componentInstance.mountComponent(id, transaction, 0);
41
return ReactMarkupChecksum.addChecksumToMarkup(markup);
42
}, null);
43
} finally {
44
ReactServerRenderingTransaction.release(transaction);
45
}
46
}
47
48
/**
49
* @param {ReactElement} element
50
* @return {string} the HTML markup, without the extra React ID and checksum
51
* (for generating static pages)
52
*/
53
function renderToStaticMarkup(element) {
54
invariant(
55
ReactElement.isValidElement(element),
56
'renderToStaticMarkup(): You must pass a valid ReactElement.'
57
);
58
59
var transaction;
60
try {
61
var id = ReactInstanceHandles.createReactRootID();
62
transaction = ReactServerRenderingTransaction.getPooled(true);
63
64
return transaction.perform(function() {
65
var componentInstance = instantiateReactComponent(element, null);
66
return componentInstance.mountComponent(id, transaction, 0);
67
}, null);
68
} finally {
69
ReactServerRenderingTransaction.release(transaction);
70
}
71
}
72
73
module.exports = {
74
renderToString: renderToString,
75
renderToStaticMarkup: renderToStaticMarkup
76
};
77
78