관리 메뉴

꾸준히 합시다

[React 에러] Uncaught Error: useNavigate() may be used only in the context of a <Router> component. 본문

Errors

[React 에러] Uncaught Error: useNavigate() may be used only in the context of a <Router> component.

tturbo0824 2022. 7. 28. 15:22

nav 버튼을 클릭하면 해당 페이지로 이동하는 기능을 navigate를 사용해서 구현하려 했다. 그때 오류가 발생했고 읽어보니 <Router> 구성 요소의 컴포넌트 밖에서 useNavigate()를 사용할 수 없다는 경고 메시지였다.

 

처음에는 당황했지만 알고 보니 단순한 에러였다.

 

Header 컴포넌트 내에서 navigate를 사용했는데 Header 컴포넌트가 <BrowserRouter> 태그 밖에 존재하는 것이 문제가 되었다.

 

// 수정 전 App.tsx

// ...코드 생략

return (
  <AppWrapper>
    <Header />
    <BrowserRouter>
      <Routes>
        <Route path='/' element={<Mainpage />} />
      </Routes>
    </BrowserRouter>
  </AppWrapper>
)

// ... 코드 생략

 

아래 코드와 같이 Header 컴포넌트를 <BrowserRouter> 안으로 옮겨주니 바로 해결되었다.

// 수정 후 App.tsx

// ...코드 생략

return (
  <AppWrapper>
    <BrowserRouter>
      <Header />
      <Routes>
        <Route path='/' element={<Mainpage />} />
      </Routes>
    </BrowserRouter>
  </AppWrapper>
)

// ... 코드 생략
Comments