誰かが違いを説明できる
<Route exact path="/" component={Home} />
そして
<Route path="/" component={Home} />
「正確」の意味がわかりません
この例では、実際には何もありません。 exact
パラメーターは、類似した名前のパスが複数ある場合に機能します:
たとえば、ユーザーのリストを表示するUsers
コンポーネントがあるとします。ユーザーを作成するために使用されるCreateUser
コンポーネントもあります。 CreateUsers
のURLは、Users
の下にネストする必要があります。したがって、セットアップは次のようになります。
<Route path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
ここでの問題は、http://app.com/users
に移動すると、ルーターは定義済みのすべてのルートを通過し、見つかった最初の一致を返します。したがって、この場合、最初にUsers
ルートを見つけて、それを返します。すべて良い。
ただし、http://app.com/users/create
に移動すると、定義されたすべてのルートを再び通過し、見つかった最初の一致を返します。 Reactルーターは部分一致を行うので、/users
は/users/create
に部分的に一致するため、Users
ルートを誤って返します。
exact
パラメーターは、ルートの部分一致を無効にし、パスが現在のURLと完全に一致する場合にのみルートを返すようにします。
したがって、この場合、exact
をUsers
ルートに追加して、/users
でのみ一致するようにします。
<Route exact path="/users" component={Users} />
<Route path="/users/create" component={CreateUser} />
つまり、アプリのルーティングに複数のルートが定義されており、このようにSwitch
コンポーネントで囲まれている場合、
<Switch>
<Route exact path="/" component={Home} />
<Route path="/detail" component={Detail} />
<Route exact path="/functions" component={Functions} />
<Route path="/functions/:functionName" component={FunctionDetails} />
</Switch>
次に、exact
キーワードを、そのパスが別のルートのパスに含まれているルートに配置する必要があります。たとえば、ホームパス/
はすべてのパスに含まれるため、/
で始まる他のパスと区別するために、exact
キーワードが必要です。理由も/functions
パスに似ています。 /functions-detail
や/functions/open-door
を含む/functions
などの別のルートパスを使用する場合は、/functions
ルートにexact
を使用する必要があります。