我正在使用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
有人能帮我解决这个问题吗?
4条答案
按热度按时间qfe3c7zg1#
我相信您实际上使用的是react-router 2.4.0,但在我的例子中,需要仔细检查我的package.json是否确实执行了该版本。
希望这个有用。
42fyovps2#
在我的例子中,我升级到react-router v6,发现
withRouter
被删除了,应该使用钩子。升级文档位于:https://reactrouter.com/en/main/upgrading/v5
在升级到v5.1的沿着,您应该用钩子替换withRouter的任何用法。
以下是钩子的详细指南:https://reacttraining.com/blog/react-router-v5-1/
agxfikkp3#
在对另一个答案的注解中,您链接到了这个问题,并说您正在尝试使用react-router 2.4+进行导航。尝试将PropType规范放入文件中,看看是否会给您任何警告。例如:
iqjalb3h4#