본문으로 바로가기

 

 

이번 글에서는 A  is only ever to be used as the child of  element, never rendered directly. Please wrap your  in a <Routes>. 에러 해결 방법에 대하여 알아보겠습니다.

 

A  is only ever to be used as the child of  element, never rendered directly. Please wrap your  in a <Routes>.

 

 

[에러가 발생한 코드]

import React from 'react';
import { Route, Routes } from 'react-router-dom';
import ReactRouter1 from './ReactRouter1';
import ReactRouter2 from './ReactRouter2';

function App() {
  return (
    <div className="App">
      <Route exact path="/ReactRouter1" element={<ReactRouter1/>}/>
      <Route exact path="/ReactRouter2" element={<ReactRouter2/>}/>
    </div>
  )
}

export default App;

 

 

[에러 원인]

react-router-dom version 6이상부터는 <Route/>를 <Routes/> 안에 감싸줘야 합니다. 버전이 업데이트 되면서 사용법이 조금 바뀐 것 같습니다.

 

 

[해결 방법]

<Route/>를 <Routes/> 안에 감싸서 사용하거나 기존에 사용하시던 버전으로 버전을 수정하시면 됩니다.

1. <Route/>를  <Routes/>안에 감싸서 사용하여 해결 (권장)

import React from 'react';
import { Route, Routes } from 'react-router-dom';
import ReactRouter1 from './ReactRouter1';
import ReactRouter2 from './ReactRouter2';

function App() {
  return (
    <div className="App">
      <Routes>
        <Route exact path="/ReactRouter1" element={<ReactRouter1/>}/>
        <Route exact path="/ReactRouter2" element={<ReactRouter2/>}/>
      </Routes>
    </div>
  )
}

export default App;

 

2. 기존에 사용하시던 버전으로 버전을 수정하여 해결

npm install react-router-dom@5.3.0