我的版本是1.0.0-rc1,我的匹配功能无法正确渲染我的路线. 这是我的服务器 import express from 'express';import React from 'react';import createLocation from 'history/lib/createLocation'import Router, { match, RoutingC
这是我的服务器
import express from 'express'; import React from 'react'; import createLocation from 'history/lib/createLocation' import Router, { match, RoutingContext } from 'react-router'; import createRoutes from './create-routes'; const app = express(); const routes = createRoutes(); app.use((req, res) => { let location = createLocation(req.url); match({ routes, location }, (error, redirectLocation, renderProps) => { if (redirectLocation) res.status(301).redirect(redirectLocation.pathname + redirectLocation.search) else if (error) res.status(500).send(error.message) else if (renderProps == null) res.status(404).send('Not found') else res.send(React.renderToString(<RoutingContext {...renderProps}/>)) }); }); export default app;
这是我的路线
import React from 'react'; import { Route } from 'react-router'; import Application from './components/Application.react'; import Home from './components/Home.react'; export default function() { return ( <Route path="/" component={Application}> <Route path="home" component={Home} /> </Route> ); }
我在这做错了什么?当我要求/ home时,它应该呈现< h1> Home< / h1>而不是< h1>应用程序< / h1>.就这么简单.
我的基础是这个https://github.com/rackt/react-router/blob/master/docs/guides/advanced/ServerRendering.md
谢谢
您正在使用子路由.这意味着,当您首先转到“/ home”时,将呈现应用程序,然后通过应用程序组件内的this.props.children注入并显示子Home.有关简单示例,请参见 here:
试试这个(不是嵌套的):
<Route path="/" component={Application}> <Route path="/home" component={Home} />
如果要围绕Home组件使用呈现Application组件
render() { return ( <div> <h1>Application</h1> { this.props.children } </div> ); }