過去数週間、React Router を使用して大きな成功を収めてきましたが、解決策が見つからないように見える問題に遭遇しました。任意のクエリ パラメータが URL に追加されると (この例では、電子メールからの URL 追跡目的で)、表示されたページが読み込まれ、警告なしで自動的に更新されます。
最も基本的なルート設定を考えると:
var routes = (
<Route handler={ResultsController}>
<DefaultRoute handler={Results} />
</Route>
);
そして、デフォルトのハンドラー:
Router.run(routes, function (Handler, state) {
React.render(<Handler params={state.params} />, domElement);
});
http://whatever.com/results
すべてに移動すると正常に動作しhttp://whatever.com/results?ref=track
ますが、ページに移動すると更新され、にリダイレクトされhttp://whatever.com/results#/
ます。ハッシュとスラッシュの後にqueryParams を追加すると、正しい動作になることに注意してください。問題は、これらのリンクの多くがサーバー側で生成され、そのような方法でハッシュを強制することは望ましくないことです。
queryParams のワイルドカード ハンドラーを設定する必要がありますか? ドキュメントへのポインタも役立ちます。
編集:
これは包括的な質問/意図しない更新につながるバグに対処していませんが、Router.HistoryLocation PushState オプションを使用してルートをロードすると、queryParams の事前レンダリングが可能になることがわかりました:
Router.run(routes, Router.HistoryLocation, function (Handler, state) {
React.render(<Handler params={state.params} query={state.query} />, domElement);
});
ありがとう!