reactjs - 'withRouter' 不是从 'react-router-dom' 导出的
问题描述
Failed to compile. Attempted import error: 'withRouter' is not exported from 'react-router-dom'.
我的代码就像,我也安装react-router-dom
了一个 react-route,我现在已经重新旋转了 10 次应用程序
import React from 'react';
import {withRouter} from 'react-router-dom';
import './menu-item.scss';
const MenuItem = ({ title, imageUrl, size, history }) => (
<div className={`${size} menu-item`}>
<div
className='background-image'
style={{
backgroundImage: `url(${imageUrl})`,
}}
/>
<div className='content'>
<h1 className='title'>{title.toUpperCase()}</h1>
<span className='subtitle'>SHOP NOW</span>
</div>
</div>
);
export default withRouter(MenuItem);
解决方案
如果您不小心安装了react-router-dom
v6,那么withRouter
HOC 将不再存在。要么恢复到 v5.x,要么滚动你自己的自定义withRouter
HOC 来注入你需要的道具。或者将组件转换为功能组件并使用 React 钩子。
现在也不再history
使用一个对象,它被一个navigate
通过useNavigate
钩子访问的函数所取代。目前尚不清楚以前在哪里history
使用过,但如果您需要强制导航,以下是您访问导航的方式。如果使用 v6,那么以下是如何访问该navigate
功能。
import React from 'react';
import { useNavigate } from 'react-router-dom';
import './menu-item.scss';
const MenuItem = ({ title, imageUrl, size }) => {
const navigate = useNavigate();
// navigate("/targetPath")
return (
<div className={`${size} menu-item`}>
<div
className='background-image'
style={{
backgroundImage: `url(${imageUrl})`,
}}
/>
<div className='content'>
<h1 className='title'>{title.toUpperCase()}</h1>
<span className='subtitle'>SHOP NOW</span>
</div>
</div>
)
};
export default MenuItem;
推荐阅读
- java - 为什么这个日期字符串验证失败?
- sql - 如何使用 T-SQL 将行标记为长期疾病?
- mongodb - 在弹性 beantalk 上使用 Dockerrun.aws.json 在 mongo contianer 启动时创建用户
- php - 更改 json 对象中的字符串
- powershell - 使用 powershell 安装 Office.js 加载项
- python - PySide2:如何将 QTableWidget 的列值作为列表获取?
- unix - bash:eksctl:找不到命令。在centos 7
- emacs - emacs 是如何编译和编辑文件的?
- java - 需要帮助确定发生内存泄漏的位置吗?
- java - 如何定位具有非唯一 id/class 的 div,其中包含具有特定文本的 div,然后获取该 div 下的所有和标签