【问题标题】:Middle URL Parameter in React RouterReact Router 中的中间 URL 参数
【发布时间】:2018-03-21 05:10:40
【问题描述】:

我正在尝试路由一条中间带有参数的路径。这是我的路线的样子。

import Events from "./views/EventsView";
import Event from "./views/EventView";
import NotFound from "./views/NotFoundView";
import RegistrationView from "./views/RegistrationView"

export default [
  {path: "/", component: Events, exact: true},
  {path: "/events", component: Events, exact: true},
  {path: "/events/:projectId", component: Event, exact: true},
  {path: "/events/:projectId/register", component: RegistrationView, exact: true},
  {component: NotFound}
]

然后我将我的路线映射到 <Switch> 内,而 <Router> 内。

<Switch>
    {
        return routes.map(({path, component, exact}, key) =>
            <Route key={key} path={path} component={component} exact={exact}/>)
}
</Switch>

我使用Link 来访问Event 组件。

<Link to="/events/1234">Title Here</Link>

问题

问题是我的/events/:projectId 被路径/events/:projectId/register 覆盖。所以每次我尝试访问我的Event 组件时。我返回了RegistrationView。我尝试更改exact 值或删除&lt;Switch&gt;,但它似乎不像那样工作。 有人对这个有问题吗?你是如何解决这个问题的?

【问题讨论】:

  • 去掉事件路线上的确切位置。

标签: javascript reactjs react-router react-router-v4 react-router-dom


【解决方案1】:
{path: "/events/:projectId/register", component: RegistrationView, exact: true},

{path: "/events/:projectId", component: Event, exact: true},

带有 :projectId/register 的路由需要在顶部。

【讨论】:

  • @ZulwiyozaPutra 您是否尝试过我的建议,它与您需要删除具有参数且只有一个事件的子路线上的确切路由属性有关
  • 是的,去掉对应的exact: true后就可以了
猜你喜欢
  • 2016-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2018-04-10
  • 2019-04-08
  • 2018-05-02
相关资源
最近更新 更多