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

使用react-router-dom 4.0在代码中导航?

微生城
2023-03-14

看这段视频,react路由器似乎很容易使用,但我找不到如何在我的代码中导航,因为我想在单击div时链接,而不是使用

我已经搜索了StackOverflow,但没有找到任何适用于4.0的答案。尝试导入浏览器历史给出未定义(之前和之后安装'react-router'除了'react-router-dom')从这个问题:

import { browserHistory } from 'react-router';
console.log('browserHistory:', browserHistory);

我还看到了可以访问的“上下文”,但这显示了“匹配”的值,而不是“上下文”:

<Route path="/" render={({ match, context}) => {
    console.log('match:', match);
    console.log('context:', context);

编辑

开发工具中,我可以看到“路由器”有一个历史属性,因此当我添加该属性时,我可以访问它:

<Route path="/" render={({ match, context, history}) => {

有办法从路线外到达吗?例如,导航栏组件将导航到其他组件,但不在路由本身内...


共有3个答案

公西岳
2023-03-14

你为什么不把你的div包在链接中,而不是试图绕过它,让你的生活更轻松?

    <Link to="/" >
       <div className="to-component">go to component</div>
    </Link>
令狐昌胤
2023-03-14

我必须更多地阅读文档。历史记录对象仅使用路由上的组件(或其他)属性作为属性传递。显然需要包含“历史记录”包,并使用createBrowserHistory将其传递给路由器,然后在路由中指定组件。我认为这应该可以很好地工作,因为没有指定exact。。。

import { createBrowserHistory } from 'history';
const history = createBrowserHistory();
ReactDOM.render( (
    <Router history={ history }>
      <Route path="/" component={ App } />
    </Router>
  ),
  document.getElementById('root')
);

在我有之前

商泽宇
2023-03-14

如果我理解你的问题,这就是你如何制作链接编程

    class Test extends React.Component {

      handleClick() {
        console.log(this.context);
        this.context.router.history.push('/some/path');
      },

      render() {

        return (
          <div onClick={handleClick}>
            This is div.
          </div>
        )
      }
    }

    Test.contextTypes = {
      router: React.PropTypes.object.isRequired
    }

    ReactDOM.render(
      <Test />,
      document.getElementById("app")
    );
 类似资料:
  • 问题内容: 使用 withRouter() 时如何获取路由上下文,位置,参数等? 您可以使用withRouter获得该信息,还是必须将这些内容显式传递到组件树中? 问题答案: 因此,不再使用。在道具中都可以使用: 因此,假设您想将用户转到新路线,您只需

  • 我安装了react-router-dom v6,我想使用一个基于类的组件,在之前版本的react-router-dom v5在做某事后适用于重定向页面,但此代码不适用于v6。 在react-router-dom v6中,函数组件有一个钩子,但我需要在类基础组件中使用它,请帮助我如何在类组件中使用导航?

  • 问题内容: 使用此样板作为参考,我创建了一个Electron应用程序。它使用webpack捆绑脚本并通过Express Server托管脚本。 的WebPack配置是实质上相同的这个和服务器这样。 Electron的脚本加载: 然后index.html加载服务器托管的脚本: 我运行以构建应用程序并启动服务器,该服务器使用webpack将脚本捆绑在一起。 它工作正常,我的React组件App已安装。

  • 我正在学习使用旧版本React路由器的教程。除了下面的代码,我已经更新了所有的代码,并且可以工作了:

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

  • 问题内容: 我刚刚从v3 替换为v4。 但是我不确定如何以编程方式在的成员函数中进行导航。即在功能上我想导航到处理一些数据后。我曾经通过以下方式做到这一点: 但是我在v4中找不到这样的接口。 如何使用v4导航? 问题答案: 如果您定位到浏览器环境,则需要使用package而不是。他们按照相同的方法作出反应那样,以核心分开,( )和特定于平台的代码,( ,用细微的差别,你并不需要安装两个独立的包),