import { outputFile } from 'fs-extra'; import React from 'react'; import { renderToString } from 'react-dom/server'; import { createStore } from 'redux'; import { Provider } from 'react-redux'; import { distPath } from './file'; import App from '../components/App'; const appReducer = (state = {}, action) => { return state; } export const renderApp = (radar, pageName) => { // Create a new Redux store instance const store = createStore(appReducer, { ...radar, pageName }); // Render the component to a string const html = renderToString( ) // Grab the initial state from our Redux store const preloadedState = store.getState() // Send the rendered page back to the client const fullHtml = renderFullPage(html, preloadedState); // Save file save(fullHtml, pageName); } const renderFullPage = (html, preloadedState) => { return ` AOE Technology Radar - AOE Tech Radar
${html}
Redux Universal Example ` } const save = (html, pageName) => ( new Promise((resolve, reject) => ( outputFile(distPath(`${pageName}.html`), html, (err, data) => { if (err) { reject(err); } else { resolve(data); } }) )) );