react-router:匹配并路由。在v4中替换.match()

时间:2019-01-28 05:02:23

标签: javascript reactjs react-router-v4 serverside-rendering

如何在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>

0 个答案:

没有答案