React Router 버전 6.4부터 지원하는, 라우터 객체를 만들어서 쓰는 방법
모든 데이터 라우터 개체는 이 구성 요소로 전달되어 앱을 렌더링하고 나머지 데이터 API를 활성화
✍️ 조각글
React Router가 Context API를 기반으로 한 라이브러리라는 것이 물씬 느껴지는 파트였다. Context API를 사용해본 적이 많지 않아서 그런지, '굳이 RouterProvider를 사용해 라우팅을 구현해야 할까?'라는 의문이 든다. 2강에서 배웠던 기존의 방식으로 구현하면 어느 순간 불편해지는 일이 생기기 때문일까? 페이지가 많이 나오지 않는 작은 프로젝트같은 경우에는 그냥 이전 방식을 사용했었는데, 연습 차원에서 RouterProvider도 사용해 봐야겠다.
App.tsx를 테스트하는 것은 매우 어렵기 때문에, routes.test.tsx로 변경
routes가 라우팅 정보를 가지고 있음
createMemoryRouter는 브라우저의 기록을 사용하는 대신 메모리 라우터는 메모리에서 자체 기록 스택을 관리
Storybook과 같은 테스트 및 컴포넌트 개발 도구에 주로 유용하지만, 브라우저가 아닌 모든 환경에서 React Router를 실행하는 데에도 사용할 수 있음
테스트 코드 작성
메모리 라우터 만들어서 테스트
describe('routes', () => {functionrenderRouter(path:string) {constrouter=createMemoryRouter(routes, {initialEntries: [path]});render(<RouterProviderrouter={router}/>); }context('when the current path is “/”', () => {it('renders the home page', () => {renderRouter('/');screen.getByText(/Hello/); }); });context('when the current path is “/about”', () => {it('renders the about page', () => {renderRouter('/about');screen.getByText(/About/); }); });});