Sync/async isomorphic render of React apps with React Router + Redux
npm install @sequencemedia/react-router-redux-renderRender isomorphic _React_ apps and components in Node.
- Using _React Router_
- With Redux
_For React Router 7._
An example implementation can be found in react-router-pagination-io.
In Express:
``javascript
const express = require('express')
const app = express()
const port = 3000
const {
configureStore
} = require('./path/to/store')
const store = configureStore()
const routes = require('./path/to/routes')
const {
renderToString
} = require('react-router-redux-render')
app.get('/', ({ url: { path: pathname = '/' } }, res) => res.send(renderToString(store, routes, pathname)))
app.listen(port, () => console.log(Express ${port}))`
If React Router matches the pathname to a then renderToString returns a string.
If renderToString encounters an error then it throwa a 500 Internal Server Error.
If renderToString cannot match the pathname to a then it throws a 404 Not Found.
react-router-redux-render exports three functions:
1. renderToStringrenderToStaticMarkup
2. render
3.
renderToString generates
including the attributes that _React_ uses in ReactDOM.hydrate(). It implements ReactDOMServer.renderToString().renderToStaticMarkup doesn't include those attributes. It's useful for using React as a rendering engine for static pages. It implements ReactDOMServer.renderToStaticMarkup().render executes renderToString but returns a Promise which resolves to a string.Companion packages
1.
@sequencemedia/react-router-redux-render for React Router apps (with Redux)
2. @sequencemedia/react-router-render for React Router apps (without Redux)
3. @sequencemedia/react-redux-render` for React Redux apps (without React Router)