spee.ch/server/render/build/handlePageRender.js

50 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-04-18 21:01:26 +02:00
"use strict";
var _react = _interopRequireDefault(require("react"));
var _server = require("react-dom/server");
var _redux = require("redux");
var _reactRedux = require("react-redux");
var _reactRouterDom = require("react-router-dom");
2018-06-07 00:12:07 +02:00
var _reactHelmet = _interopRequireDefault(require("react-helmet"));
2018-05-23 20:16:47 +02:00
var _reducers = _interopRequireDefault(require("@reducers"));
2018-05-23 10:18:50 +02:00
2018-05-23 20:16:47 +02:00
var _GAListener = _interopRequireDefault(require("@components/GAListener"));
2018-05-23 10:18:50 +02:00
2018-05-23 20:16:47 +02:00
var _app = _interopRequireDefault(require("@app"));
2018-04-18 21:01:26 +02:00
2018-04-18 21:11:25 +02:00
var _renderFullPage = _interopRequireDefault(require("../renderFullPage.js"));
2018-04-18 21:01:26 +02:00
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = function (req, res) {
var context = {}; // create a new Redux store instance
2018-04-18 21:01:26 +02:00
var store = (0, _redux.createStore)(_reducers.default); // render component to a string
2018-04-18 21:01:26 +02:00
var html = (0, _server.renderToString)(_react.default.createElement(_reactRedux.Provider, {
store: store
}, _react.default.createElement(_reactRouterDom.StaticRouter, {
location: req.url,
context: context
}, _react.default.createElement(_GAListener.default, null, _react.default.createElement(_app.default, null))))); // get head tags from helmet
2018-04-18 21:01:26 +02:00
var helmet = _reactHelmet.default.renderStatic(); // check for a redirect
if (context.url) {
// Somewhere a `<Redirect>` was rendered
return res.redirect(301, context.url);
} else {} // we're good, send the response
// get the initial state from our Redux store
var preloadedState = store.getState(); // send the rendered page back to the client
res.send((0, _renderFullPage.default)(helmet, html, preloadedState));
};