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

React Router V4(React Router dom)以编程方式在树的深处导航[重复]

裴俊豪
2023-03-14

我查看了下面的帖子,虽然它给出了几种不同的解决方案,但似乎都不能解决我的问题。

使用react router V4,我需要通过编程从树中的组件中导航,这些组件将无法访问传递的路由器道具(历史记录、url、参数等)。最直接的方法是什么?

共有2个答案

经博延
2023-03-14

最直接的方法是像这样将历史记录移动到单独的文件中

history.js

import createHistory from 'history/createBrowserHistory'
const history = createHistory()
export default history

然后在任何其他组件中:

import history from 'path/to/history.js'

...
someFoo(){
  history.push({
    pathname: '/new/url',
  })
}
...

您还需要确保您通过新的历史到您的路由器使其工作

微生德泽
2023-03-14

树中的任何组件,无论其深度如何,都可以访问历史位置匹配道具,这些道具由react-router使用。要做到这一点,您必须将组件包装在react-router提供的带有路由器HOC的中。

代码:

//other imports
import {withRouter} from 'react-router-dom'

//define component MyComponent here

export default withRouter(MyComponent);

在上面定义的MyComponent内部,您可以使用this.props.history.push(newURL)访问historyprop并重定向到任何新url 您可以在以下位置找到更多信息:https://reacttraining.com/react-router/web/api/withRouter

 类似资料:
  • 问题内容: 我一直在寻找这种解决方案已有一段时间,但是没有任何解决方案。例如一个解决方案是 此代码将添加带有“停止”图像的按钮。就像这样,还有其他解决方案,例如“搜索,刷新”等。但是 ,如果我想以编程方式在想要的图像上添加按钮,该怎么办? 问题答案: 自定义按钮图片,未设置按钮框: 您可以使用指定的图像和其他属性来初始化新项目。 检查此Apple文档。参考 UIBarButtonItem具有使用按

  • 问题内容: 完成一些验证后,如何移动到新页面?我有这样的事情: 我想将用户发送到另一条路线。我看过Redirect,但似乎它将从历史记录中删除我不想要的当前页面。 问题答案: 您正在使用react-router v4,因此您需要在组件中使用withRouter来访问历史对象的属性,然后使用它来动态更改路由。 withRouter : 您可以通过withRouter高阶组件访问历史对象的属性和最接近

  • 我迫不及待地开始使用最新的alpha版本的v4。全新的

  • 问题内容: 我正在尝试使用导航栏(“后退”按钮,标题等)和选项卡栏(底部的工具栏)制作一个应用程序。我使用的是子视图,因此不必担心状态栏,导航栏,标签栏的高度等问题。但是我认为这给我带来了麻烦,因为我似乎无法弄清楚如何设置导航栏和标签栏。 这就是我所拥有的。我究竟做错了什么? AppDelegate.h AppDelegate.m ViewController.h ViewController.m

  • 问题内容: 我有一个带有标题的导航栏。当我双击文本以将其重命名时,它实际上说这是一个导航项,所以可能就是这样。 我正在尝试使用代码来更改文本,例如: 那显然不是我的代码,只是显示了它是如何工作的。 因此,每当我按下按钮时,我都希望标题更改。 问题答案: 您可以通过更改显示的视图控制器的标题来更改标题: 通常,这是在视图控制器上加载视图时完成的: 但是,这仅在将视图控制器嵌入UINavigation

  • 问题内容: 通过使用我可以使用元素创建由React Router本机处理的链接。 我在内部看到它的呼唤。 我想导航。不是来自链接,而是来自下拉菜单(例如)。如何在代码中执行此操作?什么啊 我看到了mixin,但是如果没有,我可以这样做吗? 问题答案: 带有钩子的React Router v5.1.0 如果您使用React> 16.8.0和功能组件,则React Router> 5.1.0中会有一个