誰か違いを説明してくれませんか
<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のより多くの部分に一致させたい場合は、末尾に * を使用します。