React Hook "useEffect" is called conditionally. React Hooks must be called in the exact same order in every component render. Did you accidentally call a React Hook after an early return?
두둥 에러 등장
우선 리액트 훅의 2원칙에 대해 알아보자.
올바른 예시
useEffect(() => {
// hooks 최상위 선언부
const getuserprofile = async () => {
await GroupService.getGroupOwn()
.then((res) => res.data.response)
.then((body) => {
setOwndata([...owndata, ...body]);
setIsclick(body[0]);
});
};
if (owndata.length === 0) {
getuserprofile();
}
}, []);
잘못된 예시
const Container = () =>{
const { data, error } = useSelector((state) => state.accounts.accounts);
...
if(error){
return(
<ERR>에러가 발생했습니다.</ERR>
)
const TableRenderer = useMemo(()=>{<Table/>},[]);
return (
{TableRenderer}
)
}
}
// if문과 useMemo부분 코드의 위치를 바꾸면 해결된다!
⇒ 위의 두 원칙을 지키는 게 우선