[javascript] 리액트 라우터의 라우팅 미들웨어와 플러그인

리액트 라우터(React Router)는 싱글 페이지 애플리케이션(SPA)에서 라우팅을 구현할 수 있는 라이브러리입니다. 이 라이브러리는 리액트(React)의 컴포넌트 기반 개발을 기반으로 하며, 브라우저의 주소와 매핑되는 컴포넌트를 로드하고 렌더링하는 역할을 합니다.

리액트 라우터는 라우트 설정을 위한 미들웨어와 플러그인을 제공하여 개발자가 라우팅 로직을 좀 더 유연하게 제어할 수 있도록 지원하고 있습니다. 이를 통해 우리는 라우터의 동작을 확장하거나 사용자 정의할 수 있습니다.

라우팅 미들웨어

리액트 라우터의 라우팅 미들웨어는 라우팅 이벤트가 발생할 때 실행되는 함수입니다. 이 미들웨어를 사용하면 다양한 기능을 추가하거나 라우팅 이벤트를 가로채고 처리할 수 있습니다.

예를 들어, 인증된 사용자만 접근할 수 있는 페이지를 구현한다고 가정해봅시다. 이 경우에는 라우팅 미들웨어를 사용하여 로그인 여부를 확인하고, 로그인하지 않은 사용자를 로그인 페이지로 리디렉션하는 로직을 구현할 수 있습니다.

다음은 라우팅 미들웨어를 사용한 인증 로직의 예입니다.

import { useHistory } from 'react-router-dom';

const AuthenticationMiddleware = (Component) => {
  const history = useHistory();

  const isAuthenticated = // 인증 여부를 확인하는 로직

  if (!isAuthenticated) {
    history.push('/login'); // 로그인 페이지로 리디렉션
  }

  return <Component />;
};

위 예제에서는 useHistory 훅을 사용하여 브라우저 히스토리를 조작하였습니다. 인증 여부를 확인하고, 인증되지 않은 사용자가 접근한 경우에는 로그인 페이지로 리디렉션하도록 로직을 작성하였습니다.

라우팅 플러그인

리액트 라우터의 라우팅 플러그인은 라우팅 동작을 변경하거나 확장하기 위해 사용됩니다. 이 플러그인을 사용하면 라우팅 이벤트를 가로채고 원하는 동작을 수행할 수 있습니다.

예를 들어, Google 애널리틱스(Google Analytics)와 같은 분석 툴을 사용하여 해당 페이지의 방문자 추적을 할 수 있습니다. 이를 위해 리액트 라우터의 라우팅 플러그인을 사용하여 페이지의 라우팅 이벤트를 가로챌 수 있습니다.

다음은 Google 애널리틱스를 위한 라우팅 플러그인의 예입니다.

import ReactGA from 'react-ga';
import { useLocation } from 'react-router-dom';

const GoogleAnalyticsPlugin = () => {
  const location = useLocation();

  // 페이지 이동을 추적하는 로직
  ReactGA.pageview(location.pathname);

  return null;
};

위 예제에서는 useLocation 훅을 사용하여 현재 페이지의 경로를 가져왔고, 이를 바탕으로 Google 애널리틱스에 페이지 이동을 추적하는 로직을 작성하였습니다.

결론

리액트 라우터의 라우팅 미들웨어와 플러그인은 라우팅 로직을 보다 유연하게 제어할 수 있는 기능입니다. 이를 통해 인증, 분석 등 다양한 요구사항을 구현할 수 있으며, 더욱 강력한 SPA를 개발할 수 있습니다.

참고 자료: