問題は、URLからクエリ文字列を取得し、指定された製品ページを取得するための初期フェッチ要求があることです。Sagaサーバー側のレンダリングリダイレクトを使用するリアルーター
クライアント側とサーバー側で同じロジックとルーティングが使用されます。
APIリクエストはredux-saga
で実行されますが、失敗した場合(一致する商品がない場合)、そのサイトはすでに/product
ルートにあり、リダイレクトが発生する必要があります。クライアント側では
それはbrowserHistory
またはちょうどwindow.location.href
を使用して動的にリダイレクトすることができ、これは、非常に簡単ですが、サーバー上で、私はおそらく、res
オブジェクトを伝承し、res.redirect
を使用しなければならないだろう、使用する異なる2このアプローチで関数をリダイレクトします。
もう1つの解決策は、これを最上位の方法で捕捉することです。 ReactDOMServer.renderToString(component)
の間のexpress index.js、および失敗したときにクライアント側のエンドポイントで、別のロジックを使用します。たとえば、高速リダイレクトを伴う404ビュー。しかし、とにかくsaga
が最上位の階層ではないので、この404を投げ、最上位のコンテキスト(エクスプレスサーバー)にキャッチすることは、非常に「汚い」試行錯誤の方法でそれを渡す必要があります。
正確性の点でどのように取り組むべきですか?明示的にルーティングロジックを2倍にしたくないので、同型コードでうまく処理するようにしたいと思います。