오늘은 react-router-dom v6에 관하여 작성해보려고 한다.
고작 3, 4달전에 react 공부를 하면서 이렇게 쓰면 되는구나 하고 잘 쓰고 있던 react 라우터가 복습을 하는 과정에서 계속 에러가 발생하였다. 이게 무슨 문제일까..구글링을 해봤더니 react-router-dom 버전이 업그레이드 되어서 생기는 에러였다. 그렇다면 v6로 업그레이드 되면서 바뀐점이 있는지 살펴보자.
아래와 같이 StaticRouter의 import 패키지 경로가 변경되었다.
import { StaticRouter } from "react-router-dom"; // v5
import { StaticRouter } from "react-router-dom/server"; // v6
기존에는 루트 페이지("/") 같은 경우 모든 페이지들이 다 불려오는 현상이 있어 exact를 작성해줘야 하는 상황이 있었지만 v6부터는 exact 옵션이 삭제되고 알아서 매칭되는 컴포넌트를 보여주는 방식으로 바뀌었다.
또한, 하위경로에 여러 라우팅을 매칭시키고 싶다면 url 뒤에 *를 사용하여 일치시킬 수 있다.
<Route path="Home/*" />
Route에서 컴포넌트를 렌더링 하기 위해서 사용했던 component, render 속성의 네이밍이 element로 바뀌었다. 예시는 아래와 같다.
// v5
<Route path="/home" component={Home} />
// v6
<Route path="/home" element={<Home />}>