【发布时间】:2016-09-08 20:08:13
【问题描述】:
我目前正在使用 React Router,并且有使用 browserHistory 的路由,例如:
import { Router, Route, IndexRedirect, browserHistory } from 'react-router';
<Router history={browserHistory}>
<Route path="tasks" component={Tasks}>
<IndexRoute component={List} />
<Route path="/:id" component={Item} />
</Route>
</Router>
这让我可以做如下路线:
/tasks//tasks/1234
这可行,但我们遇到了一种情况,即我们有两个视图同时显示。我们希望链接可以共享,并让应用同时打开两个视图。
例如,如果我们在屏幕左侧有任务,在右侧有商店,我们希望路径有两个独立的部分,例如:
/tasks/1234/#/shop/item/xyz
shop route 应该独立于 hash 的左侧,tasks route 应该独立于 hash 的右侧,这样/new-feature/xyz/#/shop/item/xyz 仍然应该在窗口右侧呈现相同的视图。
是否可以让 React Router 做这样的路由?还是我必须编写一个自定义路由器来解决这个问题?
我猜我基本上必须将 browserHistory 和 hashHistory 结合在一起,但我认为 React Router 开箱即用是不可能的。
【问题讨论】:
-
/tasks/1234/#/shop/item/xyz在我看来就像一条常规的嵌套路由?这个 url 的其他配置是否会破坏像这样的正常嵌套结构? -
同意调用嵌套路由,一个处理侧面板,另一个处理内页等?
-
@azium,嵌套路由需要将
/shop嵌套在/tasks下。我相信 OP 希望每个部分相互独立,以便您可以导航出/tasks,但仍留在/shop(分别用于页面的左侧和右侧)。 -
是的,我不认为 react-router 支持线性视图层次结构以外的任何东西。我能想到的最接近的方法是有一条带有
left和right查询参数的路由,该参数对左右视图的状态进行编码。然后,当路线更改时,由您来呈现正确的视图。 -
是的,我正在寻找@Chris 提到的东西。我应该说得更清楚。
标签: reactjs react-router