BrowserRouter 导致无效的钩子调用。钩子只能在函数组件的主体内调用
2021-12-24
5419
使用 react-router-dom 版本 6 时出现以下错误:
Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
它说我的 BrowserRouter 有问题,这似乎指向 React 和渲染器不匹配。但是,我找不到任何问题。以下是导致错误的代码片段:
import React from 'react';
import './App.css';
import { BrowserRouter, Route, Routes } from 'react-router-dom';
import Home from "./pages/Home";
function App() {
return (
<div>
<BrowserRouter>
<Routes>
<Route path="/" element={Home}/>
</Routes>
</BrowserRouter>
</div>
);
}
export default App;
执行 npm ls react 会产生以下内容:
├─┬ [email protected]
│ ├─┬ @restart/[email protected]
│ │ └── [email protected] deduped
│ ├─┬ @restart/[email protected]
│ │ ├─┬ @react-aria/[email protected]
│ │ │ └── [email protected] deduped
│ │ └── [email protected] deduped
│ ├─┬ [email protected]
│ │ └── [email protected] deduped
│ ├─┬ [email protected]
│ │ └── [email protected] deduped
│ ├─┬ [email protected]
│ │ └── [email protected] deduped
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected] deduped
├─┬ [email protected] extraneous
│ └── [email protected] deduped
└─┬ [email protected] extraneous
└── [email protected] deduped
我被这个问题困扰了,任何帮助都将不胜感激!谢谢!
2个回答
我发现了这个问题!我有两个 package.json 文件 - 一个在我的 React 应用程序中,另一个在应用程序之外。我将 react-router-dom 安装在错误的 package.json 中。将其安装在 React-app 本身中可以解决问题。
user17756726
2021-12-24
我有相同的代码,也遇到了类似的问题,我按照下面的肮脏修复方法操作。
-
转到 package.json 文件并在
"react-router-dom": "^6.3.0",
(截至 2022 年)下方添加行"react-router":"^6.x.x",
。 -
转到项目目录并使用
rm -rf node-modules/*
删除所有节点模块(我们将在下一步安装所有模块)。 -
使用
npm install
安装节点模块并使用npm start
在浏览器中运行 react 应用程序。如果仍然出现错误,您也可以尝试隐身模式。
希望这对我有用。希望它能有所帮助!
Vikas Bahuguna
2022-10-13