reactjs - 如何在有状态组件的 React Router 5.1.2 中使用 History.push ('path' )?

标签 reactjs react-router react-router-dom

如何在有状态组件(类组件)的React Router 5.1.2中使用history.push('path')?

我找到了这个,但它是无状态组件的解决方案。

import { useHistory } from "react-router-dom";

function App() {
  let history = useHistory();
}

最佳答案

我在使用 React Router v5 时遇到了同样的问题。 当尝试在下面以编程方式更改路线时,

this.props.history.push({
    pathname: `/target-path`,
    state: variable_to_transfer
});

this.props.history 未定义

这是我的 React Router v5 解决方案。

import React, { Component } from "react";
import { withRouter } from 'react-router-dom';

class MyClass extends Component {
    routingFunction = (param) => {
        this.props.history.push({
            pathname: `/target-path`,
            state: param
        });
    }
    ...
}
export default withRouter(MyClass);

这里是reference article 。 希望它能帮助您节省时间。

更新Next.js
您应该使用 Next.js 中“next/router”中的 withRouter。

import React, { Component } from "react";
import { withRouter } from 'react-router-dom';

class MyClass extends Component {
  routingFunction = (param) => {
     this.props.router.push('/dashboard');
  }
  ...
}
export default withRouter(MyClass);

关于reactjs - 如何在有状态组件的 React Router 5.1.2 中使用 History.push ('path' )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59402649/

相关文章:

javascript - 使用 NextJS 从页面(子)组件调用布局(父)组件函数

javascript - React-Router 1.0.0RC1 - 将状态作为属性传递给子路由

ReactJS - 如何使用 React Router 创建具有单一路径的多步骤组件/表单

reactjs - 在 Material-UI 面包屑导航中使用 React Router DOM 路由

Reactjs,Typescript - 子组件上不存在属性

javascript - 使用 React 提交后要清除的输入表单

reactjs - 我如何使用导航将 Prop 传递到下一个屏幕

javascript - 当用户单击react-router-dom上的后退按钮时如何更改组件的状态?

jquery-ui - jQuery UI 可使用 React.js 进行排序

reactjs - 更改url时如何防止react-route重新渲染整个应用程序