웹개발/React

React - routing, navigate

bergerac 2025. 5. 12. 09:11

라우팅의 기본 구조

  • BrowserRouter: 라우팅 기능을 앱 전체에 적용하기 위한 최상위 컴포넌트
  • Routes: 여러 경로(Route)를 감싸주는 컨테이너
  • Route: 실제로 경로와 컴포넌트를 매핑하는 컴포넌트
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';

function App() {
  return (
    <BrowserRouter>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </BrowserRouter>
  );
}

 

  • / 주소에 들어오면 Home 컴포넌트가 렌더링되고,
  • /about 주소엔 About 컴포넌트가 렌더링된다.

Link 컴포넌트 페이지로 이동

React 에서는 페이지를 새로고침하지 않고 이동할 수 있는 Link component를 제공한다. a 태그를 사용하면 전체 페이지가 리렌더링 되기 때문에 성능상 좋지 않다.

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

function Menu() {
  return (
    <nav>
      <Link to="/">홈</Link>
      <Link to="/about">소개</Link>
    </nav>
  );
}

 

to 속성에 이동하고 싶은 URL로 경로를 넣어주면 끝

 

useNavigate: 이벤트 안에서 라우팅 하기

때로는 사용자가 버튼을 클릭했을 때 페이지를 이동하고 싶을 수 있다. 예를 들어 로그인 성공 시 홈으로 이동하는 경우. 이럴 땐 useNavigate() 훅을 사용한다.

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

function Login() {
  const navigate = useNavigate();

  const handleLogin = () => {
    // 로그인 로직 수행 후
    navigate('/'); // 홈으로 이동
  };

  return <button onClick={handleLogin}>로그인</button>;
}

 

기본 사용법

const navigate = useNavigate();
navigate('/경로');

이전 페이지로 돌아가기

navigate(-1); // 브라우저 history에서 한 페이지 뒤로

상태(state)와 함께 이동

navigate('/profile', { state: { userId: 42 } });