You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
filepizza/server/routes/react.js

30 lines
641 B
JavaScript

var React = require('react')
var ReactRouter = require('react-router')
var alt = require('../../client/alt')
var clientRoutes = require('../../client/routes')
function isNotFound(state) {
for (var r of state.routes) {
if (r.isNotFound) return true
}
return false
}
module.exports = function (req, res) {
alt.bootstrap(JSON.stringify(res.locals.data || {}))
ReactRouter.run(clientRoutes, req.url, function (Handler, state) {
var html = React.renderToString(<Handler data={alt.takeSnapshot()} />)
alt.flush()
if (isNotFound(state)) res.status(404)
res.write('<!DOCTYPE html>\n')
res.end(html)
})
}