当前位置: 首页 > 知识库问答 >
问题:

如何在嵌套路由中获取父参数?

公冶光亮
2023-03-14

对于react应用程序,我有以下嵌套路由/组件的基本结构:

  • /users-

在react router v4的上下文中,我试图弄清楚的是如何访问用户设置组件中的:id参数。我可以在UserLayout组件中很好地访问它,但在下游没有其他地方。

我的主路由器定义位于Home组件中,但所有特定于用户的路由都包含相同的头信息,因此我希望所有特定于用户的路由都嵌套。我当前的结构在UserLayout组件中定义了这些嵌套路由。但是,无论我对布局组件的路由定义做了什么,我都无法获得要渲染的“索引”路由(UserProfile)以外的任何其他路由。当尝试访问UserSettings或任何其他路由时,我的顶级404路由反而被击中。

以下是相关的JSX(实际组件的render函数片段):

<main>
     <Switch>
         <Route exact path="/login" component={Login} />
         <Route exact path="/users" component={UsersList} />
         <Route exact path="/users/:id" component={UserLayout} />
         <Route exact path="/" component={Home} />
         <Route component={NoMatch} />
     </Switch>
</main>
<div>
     <Switch>
         <Route path={`${match.url}/settings`} component={UserSettings} />
         <Route path="/users/:id/blah" component={YetAnotherComponent} />
     </Switch>
     <Route path="/users/:id" component={UserProfile} />
</div>

UserLayout组件中,我尝试了开关中显示的两种路径格式,并尝试了打开/关闭精确匹配。我唯一能想到的就是使用Route组件的render参数来传递id参数,但这似乎是错误的。这是我唯一的选择吗?


共有1个答案

太叔京
2023-03-14

当然,在我发帖几分钟后,我就明白了。在我的顶级路由配置中,我将/user/: id设置为需要精确匹配。这意味着当我导航到/user/: id/anything_else时,路由器根本没有加载UserLayout,因此没有机会测试我配置的其余路由。

所以我改变了这个从我的家庭组件:

<Route exact path="/users/:id" component={UserLayout} />

……为此:

<Route path="/users/:id" component={UserLayout} />

... 现在世界一切都好了。

 类似资料:
  • 我正在尝试写一个简单的路线系列,下面是我想要发生的事情: 我几乎什么都试过了,却不知道该怎么办。这方面的文档很难理解。 谁能给我指点一下吗?

  • 问题内容: 有没有办法在React Router v4中嵌套路由? 这有效: 这不是: 客户组成部分: 问题答案: 到目前为止,我发现的最佳模式。 我可以继续将其嵌套在组件中,并且一切都很好,包括hmr(如果使用webpack,请不要忘记设置为)

  • 我在使用react hooks的reach router上遇到了一点问题。我需要在浏览器中捕获路由的参数,我尝试使用Web of reach路由器中的本机文档的道具,但这并没有给我参数,路由是这样的: 如何捕获该变量“init”?

  • 如果我将路由折叠起来,这样看起来就像: 工作很好。我嵌套的原因是因为我将在“dashboard”下有多个子项,并且希望它们都在URL中以为前缀。

  • 本文向大家介绍详解react如何在组件中获取路由参数,包括了详解react如何在组件中获取路由参数的使用技巧和注意事项,需要的朋友参考一下 路由参数 假如我们有很多 list 页面,这些页面除了动态内容不同,其他的页面部分都相同,这个时候需要怎么配置路由和组件呢? 这种场景就需要用到路由的参数功能,增加一条包含参数的路由配置。 注意 path 属性中的 :id 就是该路由的参数( param )。

  • 1. 前言 本小节我们介绍如何嵌套使用 VueRouter。嵌套路由在日常的开发中非常常见,如何定义和使用嵌套路由是本节的重点。同学们在学完本节课程之后需要自己多尝试配置路由。 2. 配置嵌套路由 实际项目中的应用界面,通常由多层嵌套的组件组合而成。同样地,URL 中各段动态路径也按某种结构对应嵌套的各层组件,例如: /article/vue /a