Files
freeCodeCamp/common/app/utils/render-to-string.js
Berkeley Martinez d511be3332 Add new rx saga
2016-07-28 23:39:17 -07:00

25 lines
632 B
JavaScript

import { Observable } from 'rx';
import ReactDOM from 'react-dom/server';
import debug from 'debug';
const log = debug('fcc:professor');
export default function renderToString(Component, sagaMiddleware) {
try {
log('initial render');
ReactDOM.renderToStaticMarkup(Component);
log('initial render completed');
} catch (e) {
return Observable.throw(e);
}
sagaMiddleware.end();
return Observable.merge(sagaMiddleware)
.last({ defaultValue: null })
.delay(0)
.map(() => {
sagaMiddleware.restart();
const markup = ReactDOM.renderToString(Component);
return { markup };
});
}