Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import React from 'react';
- import ReactDOM from 'react-dom/server';
- import Helmet from 'react-helmet';
- import { flushChunkNames } from 'react-universal-component/server';
- import flushChunks from 'webpack-flush-chunks';
- import { Provider } from 'react-redux';
- import { StaticRouter } from 'react-router';
- import createDocument from './document';
- import configureStore from '../shared/redux/store/configureStore';
- import App from '../shared/App';
- export default ({ clientStats }) => async (req, res) => {
- const preloadedState = {};
- const store = configureStore(preloadedState);
- const context = {};
- const app = (
- <Provider store={store}>
- <StaticRouter location={req.url} context={context}>
- <App/>
- </StaticRouter>
- </Provider>
- );
- const appString = ReactDOM.renderToString(app);
- const helmet = Helmet.renderStatic();
- const chunkNames = flushChunkNames();
- const { js, styles } = flushChunks(clientStats, { chunkNames });
- const document = createDocument({
- appString,
- js,
- styles,
- helmet,
- preloadedState: JSON.stringify(preloadedState)
- });
- if (context.url) {
- res.writeHead(301, {
- Location: context.url
- });
- res.end();
- } else {
- res.set('Content-Type', 'text/html').end(document);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement