TypeScript报错react-router-dom Route组件不存在exact属性问题问询
问题根因
- 依赖版本不匹配:你安装的
react-router-dom是v6版本,但对应的类型声明包@types/react-router-dom是v5版本,二者API定义不一致引发类型校验报错 react-router-dom v6本身已彻底移除exact属性,所有路由默认就是精确匹配,v5版本的exact属性在v6的Route组件参数中完全不存在,也是触发报错的核心原因
解决方案
方案1:适配react-router-dom v6(推荐)
v6版本本身就是TypeScript编写的,内置类型支持,不需要单独安装第三方类型声明包,调整步骤如下:
- 卸载冲突的v5版本类型包
npm uninstall @types/react-router-dom
- 调整路由写法,v6要求所有Route组件必须包裹在Routes组件内,同时用element属性指定要渲染的组件,不需要额外加exact声明:
import {BrowserRouter as Router, Routes, Route} from "react-router-dom"; // 示例引入你自己的页面组件 import Home from "./Home"; import About from "./About"; const App = () => { return ( <div> <Router> <Routes> <Route path="/" element={<Home />}/> <Route path="/about" element={<About />}/> </Routes> </Router> </div> ) } export default App;
方案2:回退到react-router-dom v5版本
如果你更习惯v5的API写法,直接将react-router-dom版本降到和类型包匹配的v5版本即可,原有代码不需要修改就能正常运行:
npm install react-router-dom@5.3.0
内容的提问来源于stack exchange,提问作者Veselin Kontić
相关产品推荐
相关产品推荐

