すべての404を処理するためにグローバルなNo Match経路が必要です。一度サインインすると、すべてのプライマリビューがヘッダーとフッターで囲まれたレイアウトになります。 NotFoundコンポーネントはこのレイアウトの外側にレンダリングする必要があります。リアクタ・ルータ4ネストされた経路と一致しない
const App =() => (
<Switch>
<Route path="/register" component={Register} />
<Route path="/signin" component={SignIn} />
<Route path="/" component={Home} />
<Route component={NotFound} />
</Switch>
);
const Home =() => (
<div>
<Header />
<main>
<Switch>
<Route exact path="/" component={Main} />
<Route path="/list" component={List} />
<Route path="/tasks" component={Tasks} />
</Switch>
</main>
<Footer />
</div>
);
上記のサンプルコードは、私が望むようにレイアウトをレンダリングする際に動作しますが、レンダリング:ここ
はここcode sample
を「作業」へのリンクは、コードの簡単な例であります一致しないURLの空のレイアウト私はexact
にアプリケーションルートパスを設定した場合、私はNOTFOUNDを取得したが、ホームのルートを失うことができるよりも
けれどもRoute
S Iのリストの一番下に根を移動し、根にexact
を、使用しない/使用のバリエーション予想される動作の一部を動作させることができますが、そのすべてが一元的に動作するわけではありません。
私は "/" を訪問した場合、私が見ることを期待:
Some Header Thing
Home
Some Footer Thing
私は "/リスト" を訪問すれば、私が見ることを期待:
Some Header Thing
List
Some Footer Thing
私は私が期待する "/登録" をご覧場合見るために:私は "/ foobarに" を訪問すれば
Register
を私が見ることを期待:
Not Found
これはうまくいくと思いますが、古いv3ルータの設定を再実装しているように感じました。このようなことは難しくないはずですので、v4 APIの完全な理解が不足している可能性が非常に高いです。私はそれを突き刺し、あなたの提案を念頭に置いていきます。 – Jadam