ライン
<Route path="/:user" component={User}/>
は/
後のすべてがcomponent
のthis.props.params.user
変数に渡されるとUser
コンポーネントがレンダリングされることを意味しています。
与えられたpath
のパターンがpath=
パターンと一致する場合にのみマッチングルールが適用されますが、リソースが実際に存在するかどうかは関係ありません。/
で始まるパスを取得し、変数の後ろにテキストがある場合、テキストは、ルートパラメータuser
とUser
コンポーネントがレンダリングされ、それだけのテキストとして解析されます。だから、this.props.params.user
はこの場合「約」の値を持ちますが、そのような名前が見つからない場合はどのように表示しますか?
通常、一度にすべてのパターンを一致させるパターンが多い場合は、<Switch>
コンポーネントを使用して最初の一致のみが実際にレンダリングされるようにしていると思います。
A)
とパスがで、ルール
<Route path="/about" component={About}/>
が一致になるだろうとAbout
成分がレンダリングになるだろうし、それ以上の評価は行われていない:は<Switch>
を使用した場合。
B)パスが/something
ある場合、ルール
<Route path="/about" component={About}/>
は一致し得ないが、ルール:
<Route path="/:user" component={User}/>
が一致になるだろう、とUser
成分はsomething
でレンダリングされますthis.props.params.user
paramと評価されていません。
C)パスは、ルール
<Route path="/about" component={About}/>
<Route path="/:user" component={User}/>
が意志とNoMatch
成分がレンダリングになるだろう一致しかし
<Route component={NoMatch}/>
取得されません/
場合。逆に
が<Switch>
を使用していない、あなたのパスがの場合:このルールは、パスがに等しいすべてのルートと一致するため
<Route path="/about" component={About}/>
は、マッチになるだろう。この規則は、/
で始まり、テキスト、次があるすべてのルートと一致するため
<Route path="/:user" component={User}/>
もマッチになるだろう。
<Route component={NoMatch}/>
このルールはパスをまったく気にしないので一致しますが、常に一致します。