[英]Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component?
[英]Error Message: Uncaught Error: Invalid hook call. Hooks can only be called inside of the body of a function component
當我嘗試運行我的應用程序時出現空白頁,但沒有任何內容被渲染。
掛機調用無效。 鈎子只能在 function 組件的內部調用。 這可能由於以下原因之一而發生:
- 您可能有不匹配的 React 版本和渲染器(例如 React DOM)
- 你可能違反了 Hooks 規則
- 您可能在同一個應用程序中有多個 React 副本,請參閱https://reactjs.org/link/invalid-hook-call以獲取有關如何調試和修復此問題的提示。
import React,{ useState} from 'react';
import styled from 'styled-components'
import MenuIcon from '@material-ui/icons/Menu';
import CloseIcon from '@material-ui/icons/Close';
function Header() {
const [burgerState,setBurgerState] = useState(false);
return (
<Container>
<a href='#'>
<img src='/images/logo.svg' alt=''/>
</a>
<MenuGroup>
<div>Model S</div>
<div>Model X</div>
<div>Model Y</div>
</MenuGroup>
<RightMenu>
<a href='#'>Shop</a>
<a href='#'>Tesla Account</a>
<MenuIconContainer onClick={ () => setBurgerState(true)} >
<MenuIcon/>
</MenuIconContainer>
</RightMenu>
<BurgerNav status={burgerState}>
<CloseContainer>
<Close onClick={ () => setBurgerState(false)} />
</CloseContainer>
<li><a href='#'>Model S</a></li>
<li><a href='#'>Model Y</a></li>
<li><a href='#'>Existing inventory</a></li>
<li><a href='#'>Used inventory</a></li>
<li><a href='#'>Trade-in</a></li>
<li><a href='#'>Cybertruck</a></li>
<li><a href='#'>Roadster</a></li>
<li><a href='#'>Semi</a></li>
<li><a href='#'>Charging</a></li>
</BurgerNav >
</Container>
)
}
export default Header;
const Container = styled.div`
display: flex;
min-height: 60px;
align-items: center;
justify-content: space-between;
padding: 0 20px;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 10;
`;
const MenuGroup = styled.div`
display: flex;
text-transform: uppercase;
div {
font-weight: 600;
padding: 0 10px;
cursor: pointer;
}
@media(max-width: 760px) {
display: none;
}
`;
const RightMenu = styled.div`
display: flex;
a {
font-weight: 600;
text-transform: uppercase;
padding-right: 20px;
}
`;
const MenuIconContainer = styled.div`
display:flex;
align-iems:center;
cursor:pointer;
`;
const CloseContainer = styled.div`
display: flex;
justify-content: flex-end;
`
const Close = styled(CloseIcon)`
`;
const BurgerNav = styled.div`
position: fixed;
width: 300px;
background: white;
top: 0;
right: 0;
bottom: 0;
padding: 20px;
list-style: none;
transform: ${props => props.status ? 'translateX(0)' : 'translateX(100%)'};
transition: transform 0.2s ease-in;
li {
padding: 15px 0;
border-bottom: 1px solid rgba(0, 0, 0, .2);
a {
font-weight: 600;
}
}
`
您的組件沒有無效的掛鈎調用。 您的代碼沒問題,(除了第 27 行不相關的未定義“關閉”。您是說 MUI 中的“CloseIcon”嗎?還有一個不相關的錯字“MenuIconContainer 中的 align-iems。
檢查其他組件,因為您在此處粘貼的代碼沒問題。 你在哪里調用無效的 Hook。 對於此錯誤,您可能只有 3 個原因會看到它:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.