1

反応ルーターの奇妙な動作に気付きました。私は自分のルートを次のように定義しています:

var routes = (
  <Route name='app' path='/' handler={Master}>
    <DefaultRoute handler={HomePage} />
    {/* inject:route */}
    <Route name='home' handler={HomePage} />
    <Route name='issues' handler={IssuesPage} />
    <Route name='security' handler={SecurityPage} />
    <Route name='contactUs' handler={ContactUsPage} />
    <Route name='docs' handler={DocsPage} />
    {/* endinject */}
    <Redirect from='/' to='/home' />
    <NotFoundRoute handler={HomePage}/>
  </Route>
);

Router.run(routes, function (Handler) {
  React.render(<Handler />, document.body);
});

https://github.com/shovon/generator-react-material-uiのフォークで。

LeftNav のリンクをクリックすると、期待どおりの結果が得られます。gulp を開始すると、/ から /home へのリダイレクトが機能します。奇妙で望ましくないように見えるのは、次のようなものを入力するときですhttp://localhost:3000/#/some-undefined-route。予想どおり、DefaultRoute ハンドラーが引き継ぎ、ホームページのコンテンツが表示されます。ただし、奇妙な URL は残ります。私が期待するのは、未定義のルートが事前定義されたキャッチオールにリダイレクトされることです。たとえば、そのコンテンツを表示するだけでなくhttp://localhost:3000/#/some-undefined-route、自動的にリダイレクトしたい。http://localhost:3000/#/home

目的の効果を得るためにミックスインを使用しようとしていますtransitionTo()が、これを処理する「正しい」方法を誰かが知っているかどうかまだ疑問に思っています. また、私が見ているのは実際に意図した反応ルーターの動作なのだろうかと思います。何かが欠けている場合は、啓発されたいと思います。乾杯!

アップデート

反応ルーターのタウローズから:

やってみました

<Redirect from="*" to=".." />

https://github.com/rackt/react-router/issues/732に応答する場合。

同様の質問で他の人を助けるかもしれないのは、各サブルートにも Redirect を提供する必要があることに注意することです.

どうやら、このセットアップは、より詳細なルート制御と 404 などの処理を可能にするように設計されているようです。

from="*"最初はそうかなと思っていたのですが、スプラット( )の仕組みがわかりませんでした。多分これは他の人に役立つでしょう。乾杯。

4

0 に答える 0