【发布时间】:2020-01-18 03:27:33
【问题描述】:
我花了 2 天时间试图了解错误在哪里,知道吗?
App.js
import React, { useState, useEffect} from 'react';
import Menu from './components/Menu';
function App() {
return (
<Menu></Menu>
);
}
export default App;
菜单.js
import React, { useState, useContext } from 'react';
import Logout from './Logout';
function Menu() {
return (
<button onClick={() => Logout()}>button</button>
);
}
export default Menu;
注销.js
import React, { useContext, useState } from 'react';
export function Logout() {
const [user, setUser] = useState();
const [token, setToken] = useState();
localStorage.removeItem("token");
localStorage.removeItem("user");
setToken();
setUser();
}
export default Logout;
我使用函数顶部的钩子 (Logout()) 所以我不知道会发生什么。也许是因为我嵌套了组件? 因为如果我将代码从 logout.js 移动到 menu.js 它可以工作,但我试图将函数移动到其他文件,以便我可以在更多组件中使用它
错误在于: 无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用。
18 |
19 |
> 20 | export function Logout() {
21 |
22 | const [user, setUser] = useState();
23 | const [token, setToken] = useState();
【问题讨论】:
-
您的注销组件没有返回数据。您可以将其转换为自定义钩子
-
你想在这里做什么
onClick={() => Logout()}? -
我认为
Logout应该是纯JS函数而不是组件,尝试删除useState,它是Logout组件的setter。
标签: javascript reactjs