如何在react-router v4中进行匹配和路由?
下面是我使用react-router(v2)和expressJs编写的服务器端渲染代码段。
var routes = require('./src/routes')
app.get('*', function(req, res) {
ReactRouter.match({
routes: routes,
location: req.url
}, function(err, redirect, props) {
if (err) {
res.status(500).send(err.message)
}
else if (redirect) {
res.redirect(302, redirect.pathname + redirect.search)
}
else if (props) {
var markup = renderToString(React.createElement(ReactRouter.RouterContext, props, null))
res.render('index', { markup: markup })
}
else {
res.sendStatus(404)
}
})
})
我基本上是使用react-router.match()功能将位置匹配到路由。我在互联网上进行了大量搜索,但仍然无法在react-router v4中找到.match()函数的替代项。有人可以告诉我如何转换上面的代码以支持react-router v4吗?
./src/routes.js
module.exports = <Route path="/" component={App}>
<IndexRoute component={Top}/>
<Route path="first" component={First}/>
<Route path="second" component={Second}/>
<Route path="test" component={Test}/>
<Route path="ask" component={Ask}/>
</Route>