yahoi
Version:
Yet Another Highly Opinionated Isomorphic Framework
47 lines (32 loc) • 1.07 kB
JavaScript
import ControllerResponseType from './../ControllerResponseType';
import React from 'react';
import { renderToString } from 'react-dom/server'
import fs from 'fs';
export default class RenderContainer extends ControllerResponseType {
constructor(containerPath, props) {
super();
this.containerPath = containerPath;
this.__renderView = props.__renderView;
this.view = props.view;
this.render = this.render.bind(this);
}
render() {
return new Promise((fulfill, reject) => {
let sourceComponent = require(`${this.containerPath}.jsx`).default;
let Component = (React.createFactory(sourceComponent))();
let html = renderToString(Component);
this.__renderView(this.view, { container: html }).render().then(htmlView => {
fulfill(htmlView);
}).catch(e => {
reject(e);
})
});
}
respond(req, res) {
this.render(req).then(content => {
res.send(content);
}).catch(e => {
res.send('error: ' + String(e));
});
}
}