我一直在努力寻找一个好的方法来实现这个目标,但基本上我想做的是通过服务器呈现页面,但是后续的路由使用react-router
在客户端进行。我能够通过使用createMemoryHistory
为我的路由器来实现服务器端路由。
class Router extends React.Component {
render() {
return(
<Router history={createMemoryHistory}>
<Route path="/" component={App}>
<IndexRoute component={Index} />
<Route path="/contact" component={Contact}/>
<Route path="/about" component={About}/>
</Route>
</Router>
)
}
}
然后通过 react-rails gem,我能够在服务器上呈现内容。
<%= react_component('Router', {}, {prerender: true}) %>
这样做的问题在于,当我导航到不同的页面时,URL不会改变。因此,理想情况下,我希望能够使用
createMemoryHistory
在服务器上加载路由器,然后一旦加载完成,就切换到browserHistory
。