Front-end

[react] Uncaught Error: A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.

굿놈 2022. 2. 26. 03:55

react-router-dom 사용시 error 대처 방법

 

기존 작성 방법

import { BrowserRouter, Route } from "react-router-dom";
import Home from "./pages/Home";

function App() {
  return (
    <BrowserRouter>
      <Route path="/" component={Home} />
    </BrowserRouter>
  );
}

export default App;

 

Error message

시키는 대로 <Routes>로 감싸도 해결되지 않는다.

 

해결 방법<2022-02-26, react-router-dom V6>

react-router-dom 라이브러리가 업데이트되면서 <Route>의 매개변수 이름이 변경되었다. 

따라서 이전 버전을 설치하여 사용하던가 최신 버전에 맞게 작성하면 된다.

 

최신 버전 작성 방법

import { BrowserRouter, Route, Routes } from "react-router-dom";
import Home from "./pages/Home";

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
      </Routes>
    </BrowserRouter>
  );
}

export default App;

 

React Router 페이지 Documentation에서 자세한 내용을 확인할 수 있다.

https://reactrouter.com/docs/en/v6/getting-started/overview

 

React Router | Overview

Declarative routing for React apps at any scale

reactrouter.com