javascript 未捕获的类型错误:在react-router 2.4.0中以编程方式导航到路由时,(0,_reactRouter. withRouter)不是函数

hmmo2u0o  于 2023-01-01  发布在  Java
关注(0)|答案(4)|浏览(134)

我正在使用react-router 2.4.0,并希望以编程方式链接到另一个路由(我在使用<Link>之前所做的)。
在这个SO post中解释得很好,他们说在2.4.x中,应该将装饰器模式与withRouter一起使用,所以我使用了以下代码:

import {withRouter} from 'react-router' // further imports omitted

class CreateJobItemFormRaw extends React.Component {
  ...
}

const CreateJobItemForm = withRouter(CreateJobItemFormRaw)
export default CreateJobItemForm

在其他文件中,我使用

import CreateJobItemForm from './CreateJobItemForm'

然而,使用这种方法,我的应用不再进行渲染,控制台输出:

CreateJobItemForm.js:76 Uncaught TypeError: (0 , _reactRouter.withRouter) is not a function

有人能帮我解决这个问题吗?

qfe3c7zg

qfe3c7zg1#

我相信您实际上使用的是react-router 2.4.0,但在我的例子中,需要仔细检查我的package.json是否确实执行了该版本。

"dependencies": {
  "react-router": "^2.4.0",
  ...
}

希望这个有用。

42fyovps

42fyovps2#

在我的例子中,我升级到react-router v6,发现withRouter被删除了,应该使用钩子。
升级文档位于:https://reactrouter.com/en/main/upgrading/v5
在升级到v5.1的沿着,您应该用钩子替换withRouter的任何用法。
以下是钩子的详细指南:https://reacttraining.com/blog/react-router-v5-1/

agxfikkp

agxfikkp3#

在对另一个答案的注解中,您链接到了这个问题,并说您正在尝试使用react-router 2.4+进行导航。尝试将PropType规范放入文件中,看看是否会给您任何警告。例如:

// PropTypes
Example.propTypes = {
  router: React.PropTypes.shape({
    push: React.PropTypes.func.isRequired
  }).isRequired
};
iqjalb3h

iqjalb3h4#

import { withRouter } from 'react-router-dom'

react-router v4.x

相关问题