反応:違い そして 質問する

反応:違い そして 質問する

誰か違いを説明してくれませんか

<Route exact path="/" component={Home} />

そして

<Route path="/" component={Home} />

の意味が分かりませんexact

ベストアンサー1

この例では、特に何もありません。exact類似した名前を持つ複数のパスがある場合に、パラメータが機能します。

たとえば、Usersユーザーのリストを表示するコンポーネントがあるとします。また、CreateUserユーザーを作成するために使用されるコンポーネントもあります。 の URL はCreateUsersの下にネストする必要がありますUsers。したがって、セットアップは次のようになります。

<Switch>
  <Route path="/users" component={Users} />
  <Route path="/users/create" component={CreateUser} />
</Switch>

ここで問題となるのは、http://app.com/usersルータにアクセスすると、定義済みのルートをすべて調べて、最初に見つかった一致を返すことです。つまり、この場合は、Users最初にルートを見つけてからそれを返します。すべて問題ありません。

しかし、 に移動するとhttp://app.com/users/create、定義されたルートをすべて再度調べて、見つかった最初の一致を返します。React ルーターは部分一致を行うため、 は/users部分的に一致し/users/create、誤ってUsersルートを再度返します。

このexactパラメータはルートの部分一致を無効にし、パスが現在の URL と完全に一致する場合にのみルートを返すようにします。

したがって、この場合は、ルートexactに以下を追加してUsers、 にのみ一致するようにする必要があります/users

<Switch>
  <Route exact path="/users" component={Users} />
  <Route path="/users/create" component={CreateUser} />
</Switch>

ドキュメントではexact詳細に説明されており、他の例も示されています。

ユーザーが指摘したように2023年に更新スミット・ガバニ

react の新しいバージョン v6 では、exact はサポートされなくなりました。

ドキュメントに記載されているとおり:

正確なプロパティを使用する必要はなくなりました。これは、すべてのパスがデフォルトで正確に一致するためです。子ルートがあるためにURLのより多くの部分に一致させたい場合は、末尾に * を使用します。

おすすめ記事