ass*_*ler 10 reactjs react-router react-router-dom
使用“react-router-dom”:“^5.2.0”和“react”:“16.8.6”,
我有这个:
<Switch>
<Route path="/users" component={Users} />
<Route path="/users/:id" component={Users} />
</Switch>
Run Code Online (Sandbox Code Playgroud)
并在用户组件中:
const param = useParams();
console.log(param);
Run Code Online (Sandbox Code Playgroud)
因此,如果我输入/users
或/users/10
始终将参数呈现为空对象。我在这里缺少什么?
Bri*_*son 10
该Switch
组件将仅呈现其第一个匹配项。
第一个Route
匹配路径的/users/10
是<Route path="/users" component={Users} />
。
这意味着即使你有第二个Route
说“10”应该是一个名为 的参数id
,它也会忽略它并将其视为第一个Route
没有参数的参数。
exact
您可以通过使用第一个上的 prop轻松纠正此行为Route
:
<Route exact path="/users" component={Users} />
Run Code Online (Sandbox Code Playgroud)
这将指示react-router
仅在 URL 与path
完全匹配时才匹配该路由,并且允许/users/10
向下传递到Route
您实际希望它匹配的 。然后您将获得您期望的可用参数。
归档时间: |
|
查看次数: |
22954 次 |
最近记录: |