React

Router - Switch(Route) : v6 업그레이드 소개

Judith Hopps 2022. 9. 12. 10:26
반응형

※ react-router-dom 설치하기

cmd에 npm install react-router-dom 입력

 

참고도서) 생활코딩! React 리액트 프로그래밍

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791158392376 

 

생활코딩! React 리액트 프로그래밍 - 교보문고

처음 프로그래밍을 시작하는 입문자의 눈높이에 맞춘 | 생활코딩은 일반인에게 프로그래밍을 알려주는 것을 목적으로 하는 비영리 교육 활동으로, 이 책은 생활코딩에서 제공하는 수업 가운데

www.kyobobook.co.kr

 

 

p259 Switch컴포넌트를 이용해 exact라는 속성을 사용하지 않는 효과를 내고 있다.

function App() {
  return (
    <div>
      <h1>Hello React Router DOM</h1>
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/topics">Topics</a></li>
        <li><a href="/contact">Contact</a></li>
      </ul>
      <Switch>
        <Route exact path="/"><Home></Home></Route>
        <Route path="/topics"><Topics></Topics></Route>
        <Route path="/contact"><Contact></Contact></Route>
        <Route path="/">Not Found</Route>
      </Switch>
    </div>
  );
}

 

하.지.만. 
교재와 같이 위와 같은 코드를 입력하면 오류가 발생한다.

또한, 'Switch' is not exported from 'react-router-dom' 에러 메세지창이 뜬다.

 

이는 react가 v6버전으로 업그레이드 되면서 Switch 컴포넌트와 exact 속성이 없어지고

Routes 컴포넌트를 사용하기 때문이다. 

 

function App() 내용을 아래와 같이 수정해주면 문제는 해결된다.

 
 
import { BrowserRouter, Route,Routes } from "react-router-dom";


function App() {
  return (
    <div>
      <h1>Hello React Router DOM</h1>
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="/topics">Topics</a></li>
        <li><a href="/contact">Contact</a></li>
      </ul>
      <Routes>
        <Route exact path="/" element={<Home />} />
        <Route path="/topics" element={<Topics/>} />
        <Route path="/contact" element={<Contact/>} />
        <Route path="/*" element={<NotFound/>}/>
      </Routes>
    </div>
  );
}

 

반응형