我这样做是这样的:
<Route exact path = {`$ {match.url} /`} component = {List} />
<Route exact path = {`$ {match.url} /: id`} component = {View}/>
<Route exact path = {`$ {match.url} / new`} component = {New} />
但是当我转到具有 id 的页面时,我看到了两个部分 而且很明显为什么,因为它认为单词 new 为 id
如何正确处理?
答案 0 :(得分:2)
是的,它认为单词new
为id
。由于路径
<Route exact path={`${match.url}/:id`} component={View} />
表明在id
占位符处期望有一个动态值。由于id
只是一个占位符,使用new
作为路由参数也将满足条件。
因此,您可以将Routes
组件与Switch
组件一起包装,最后将Route
与id
占位符保持在一起。由于Switch
组件仅呈现与该路径匹配的第一个子对象,因此使用View
时/new
组件将不会显示。
<Switch>
<Route path={`${match.path}/`} component={List} />
<Route exact path={`${match.url}/new`} component={New} />
// place route with "id" at last
<Route exact path={`${match.url}/:id`} component={View} />
</Switch>