본문 바로가기

오류 로그

[React] valid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons: 해결하기

export default function Withdraw() {
  const { userPk } = useParams();

  //작동 안함
  const handleWithdraw = () => {
    axios
      .delete(`http://localhost:8080/user/withdraw/${userPk}`)
      .then((response) => {
        console.log("Withdrawal request sent successfully.");
        console.log("HTTP response code:", response.status);
        Navigate("/complete");
      })
      .catch((error) => {
        console.error("Withdrawal request failed:", error);
      });
  };

프로젝트 중 React로 탈퇴를 구현하려는데 

 

위 코드에서 자꾸 valid hook call 에러가 났다.

 

에러를 보니 세 가지 이유가 있을 수 있다고 해서 다시 찾아보았다.

 

1. You might have mismatching versions of React and the renderer (such as React DOM)

버전을 확인하라고 해서 package.json을 확인한 결과

16버전 이상이고 일치한다.

2. You might be breaking the Rules of Hooks

https://legacy.reactjs.org/docs/hooks-rules.html

 

Rules of Hooks – React

A JavaScript library for building user interfaces

legacy.reactjs.org

https://pimpdevelop.tistory.com/14

 

[에러해결] Invalid Hook Call Error

음악 관리 프로그램에서 며칠 전부터 Invalid Hook Call(유효하지 않은 Hook을 요청)하고 있다며 에러가 발생해 구동되지 않았다. useEffect(() => { callApi() .then(res => setMusics(res)) // 에러가 발생한 부분 .catc

pimpdevelop.tistory.com

 

여기서 뭔가 이상하길래 확인해보니

 

받은 코드에서 navigate을

react-router-dom에서 Navigate로 받아오고 있었다.

우리가 받아와야할 것은

 

import { useNavigate } from "react-router--dom";

이런 형태였다.

 

https://carmack-kim.tistory.com/127

 

react 에서 navigate 사용하기 (useNavigate / Navigate)

🤙 Link 는 특정 주소로 이동해주는 태그였다면, Navigate 는 특정 행동을 했을 때 해당 주소로 이동해줄 수 있게 만들어줍니다. 1. useNavigate 쓰기 useNavigate는 양식이 제출되거나 특정 event가 발생할

carmack-kim.tistory.com

차이를 찾아보니 이렇다고 한다.

 

추후에 react도 전체적으로 한 번 정리해야겠다!