尝试导入错误:“useRouteMatch”未从“react-router-dom”导出

Jan*_*nus 10 reactjs react-router react-router-dom

当我尝试从 react-router-dom 模块导入 useRouteMatch 时出现此错误,出现此错误:

尝试导入错误:“useRouteMatch”未从“react-router-dom”导出。

我有错误版本的 react-router-dom 模块吗?

import {
    BrowserRouter as Router,
    Switch,
    Route,
    Link,
    useRouteMatch,
    useParams
} from "react-router-dom";
Run Code Online (Sandbox Code Playgroud)

我查看了模块的导出,实际上并没有导出。我有错误的版本吗?

import _BrowserRouter from "./BrowserRouter";
export { _BrowserRouter as BrowserRouter };
import _HashRouter from "./HashRouter";
export { _HashRouter as HashRouter };
import _Link from "./Link";
export { _Link as Link };
import _MemoryRouter from "./MemoryRouter";
export { _MemoryRouter as MemoryRouter };
import _NavLink from "./NavLink";
export { _NavLink as NavLink };
import _Prompt from "./Prompt";
export { _Prompt as Prompt };
import _Redirect from "./Redirect";
export { _Redirect as Redirect };
import _Route from "./Route";
export { _Route as Route };
import _Router from "./Router";
export { _Router as Router };
import _StaticRouter from "./StaticRouter";
export { _StaticRouter as StaticRouter };
import _Switch from "./Switch";
export { _Switch as Switch };
import _generatePath from "./generatePath";
export { _generatePath as generatePath };
import _matchPath from "./matchPath";
export { _matchPath as matchPath };
import _withRouter from "./withRouter";
export { _withRouter as withRouter };
Run Code Online (Sandbox Code Playgroud)

请帮忙,我需要你的大脑:)

Ada*_*ers 39

如果从 v5 升级到 v6,请根据升级指南替换useRouteMatch为...useMatch

React 路由器从 v5 升级

  • 新的“useMatch”函数采用模式参数。知道如何获得“当前”模式吗? (5认同)
  • 该指南无法访问,因此如果您可以用示例更新答案,这将会有很大帮助。谢谢。 (3认同)

小智 19

我遇到了同样的问题,对我来说,我只需要更新我正在使用的 react-router 版本。

useRouteMatch加入 react-router V5.1 https://reacttraining.com/blog/react-router-v5-1/#useroutematch

将您的 package.json 更新为 "react-router-dom": "^5.1.2",

删除节点模块并运行 npm install


小智 7

我解决了更新 react-router-dom到大于 5.1 的版本

npm install react-router-dom@5.1.2 --save
Run Code Online (Sandbox Code Playgroud)

不要忘记再次启动应用程序以npm start查看更改。


Mah*_*rus 6

只需将您的 react-router-dom版本更新到最新。

npm i react-router-dom@latest
Run Code Online (Sandbox Code Playgroud)


小智 -11

钩子不能在类组件内部使用。您应该重构您的代码以使其正常工作。使用 useState 和 useEffect 挂钩,您仍然可以利用组件级别状态和组件生命周期。

如果没有该组件的完整代码,我无法对您的示例执行此操作。