【发布时间】:2021-04-08 05:50:28
【问题描述】:
我正在尝试从react-router-dom 实现useHistory 挂钩,但它似乎不起作用。抛出无效的钩子调用
App.js
import React, { Component } from 'react';
<...>
import { Signup } from './Signup.js';
import { Login } from './Login.js';
import { Account } from './Account.js';
import { AuthProvider } from './contexts/AuthContext.js';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
class App extends Component {
<...>
render() {
return(
<>
<...>
<Router>
<AuthProvider>
<Switch>
<Route exact path="/" component={Signup} />
<Route path="/signup" component={Signup} />
<Route path="/login" component={Login} />
<Route path="/account" component={Account} />
</Switch>
</AuthProvider>
</Router>
</>
);
}
}
export default App;
Account.js
import React from 'react';
import { useHistory } from 'react-router-dom';
export const Account = () => {
const history = useHistory();
return(
<h1>Hello...</h1>
);
}
它在这一行抛出错误:const history = useHistory();
错误:无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用。这可能是由于以下原因之一: <...>
最新的 React 版本,最新的 React Router 版本,如果有什么不同的话,我在create-react-app 之后安装了react-router-dom。链接和路由本身可以正常工作。在这里找到了一些关于此的主题,但没有明确/有效的解决方案。谢谢。
【问题讨论】:
-
我没有发现提供的代码 sn-ps 有问题。认为您尝试将其复制到 running 代码框并在您的问题中提供链接,以便我们可以在其中进行调试?
-
类似问题,不知道为什么它不起作用。我最终删除了 node_modules,清除了缓存并重新安装了依赖项。之后工作得很好。
标签: reactjs react-router react-hooks react-router-dom