2
私はこれを達成する良い方法を見つけるのに苦労していましたが、基本的にはサーバ経由でページをレンダリングしますが、その後のルーティングはreact-router
を経由してクライアントサイドにします。私はルータのためにcreateMemoryHistory
を使用してサーバー側のルータを持つことができます。React Routerサーバサイドレンダリング
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_component('Router', {}, {prerender: true}) %>
これの問題は、私は別のページに移動したときにURLのは変わらないということです。理想的には、createMemoryHistory
を使用してサーバにルータをロードできるようにしたいのですが、一度ロードされるとbrowserHistory
に切り替えることになります。