React Router 4 和带有动态参数的精确路径
React Router 4 and exact path with dynamic param
我遇到了在每个路径上显示组件的问题,因为 React Router 4 没有为该路由使用 exact(或者看起来如此)。
<Route path="/" exact component={Explore} />
<Route path="/about" component={About} />
// The one making problems
<Route
path="/:username"
exact={true}
render={props => <Profile {...props} />}
/>
所以当我转到 http://example.com/about 时,我的个人资料组件仍在呈现。我猜问题出在路由中,因为它期望参数 :username
并且紧跟在 /
(root)之后。难道我做错了什么?我可以为 /:username
添加另一条路线,例如 /profile/:username
,但如果可能的话,我想保持原样。
假设您没有使用 Switch。
Switch 将解决您的问题,因为它只会呈现匹配的第一个路径。
<Switch>
<Route path="/about" component={About}/>
<Route path="/:username" render={props => <Profile {...props} />} />
<Route path="/" component={Explore} />
<Route component={NotFoundPage} />
</Switch>
我遇到了在每个路径上显示组件的问题,因为 React Router 4 没有为该路由使用 exact(或者看起来如此)。
<Route path="/" exact component={Explore} />
<Route path="/about" component={About} />
// The one making problems
<Route
path="/:username"
exact={true}
render={props => <Profile {...props} />}
/>
所以当我转到 http://example.com/about 时,我的个人资料组件仍在呈现。我猜问题出在路由中,因为它期望参数 :username
并且紧跟在 /
(root)之后。难道我做错了什么?我可以为 /:username
添加另一条路线,例如 /profile/:username
,但如果可能的话,我想保持原样。
假设您没有使用 Switch。 Switch 将解决您的问题,因为它只会呈现匹配的第一个路径。
<Switch>
<Route path="/about" component={About}/>
<Route path="/:username" render={props => <Profile {...props} />} />
<Route path="/" component={Explore} />
<Route component={NotFoundPage} />
</Switch>