【发布时间】:2017-10-14 08:03:39
【问题描述】:
所以,我以这种方式设置了几条路线:
index.js
<Route exact path={pathDefault} component={Home}>
<Route path={path1} component={component1}/>
<Route path={path2} component={component2}/>
</Route>
component1.js
<Route exact path={`${props.match.url}`} component={Summary}/>
<Route path={`${props.match.url}`/someOtherPath1} component={SubComponent1}/>
<Route path={`${props.match.url}`/someOtherPath2} component={SubComponent2}/>
component2.js 设置类似。
这里的想法是我有多个顶级路由,它们有默认页面。但是,然后可以在子路由之间切换。这工作正常,直到在像component1/someOtherPath2 这样的子级别路由之一时,我可以在someOtherPath1 和someOtherPath2 之间切换,但是如果我尝试使用history.push(path2) 更改顶级路由之一,而不是回到顶级组件(即 path1 的默认组件),它最终会推送一个复合的,因此不正确的路由,例如 component1/component2。
那么,在较低级别的组件中以编程方式(最好使用history.push 或类似方法)时,您将如何更改较高级别的路由?
【问题讨论】:
-
您可以使用
history.push,只要您将历史从您注入到您的 react-router 时导入。将其导入组件后,您可以像往常一样使用history.push。如果您遇到困难,请告诉我,我会为您创建一个沙盒。 -
注入时导入是什么意思?你的意思是设置
<BrowserHistory>? -
我应该提一下,我在组件上使用
withRouter来获取道具的历史记录。
标签: javascript reactjs react-router react-redux