我有一个带有反应路由器v4的组件到anohter组件,我想在第二个组件中添加另一个路由.
这是主要途径:
const Dashboard = () => {
return (
<div>
<Header/>
<Router>
<div>
<Route path="/" exact component={Wall} />
<Route path="/challenge/:id" component={Challenge} />
</div>
</Router>
</div>
)
}
Run Code Online (Sandbox Code Playgroud)
这是挑战组件:
class Challenge extends Component {
...
render() {
return (
...
<Router>
<div>
<Route path="/overview" exact component={Overview} />
<Route path="/discussions" exact component={Discussions} />
</div>
</Router>
...
)
}
}
Run Code Online (Sandbox Code Playgroud)
这对我不起作用..
唯一有效的选项是在challenge组件中包含/ challenge /:id:
<Route path="/challenge/:id/overview" exact component={Overview} />
<Route path="/challenge/:id/discussions" exact component={Discussions} />
Run Code Online (Sandbox Code Playgroud)
最后我想让路线看起来像这样:
www.site.com/challenge/1/overview
www.site.com/challenge/1/discussions
但是不包含每个嵌套路由中的完整路由.
Jax*_*axx 11
在您的Challenge组件中尝试此操作:
class Challenge extends Component {
...
render() {
const { match } = this.props;
return (
...
<div>
<Route path={`${match.url}/overview`} exact component={Overview} />
<Route path={`${match.url}/discussions`} exact component={Discussions} />
</div>
...
)
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要添加新Router实例,因为您的Challenge组件是Router您在顶级Dashboard组件中定义的实例的后代.
| 归档时间: |
|
| 查看次数: |
3452 次 |
| 最近记录: |