프론트엔드 (TS, React)/React

리액트 라우터 : Link

bbomkim 2025. 5. 15. 23:44

React에서 react-router-dom의 Link 컴포넌트는 페이지를 새로고침 없이 이동할 수 있도록 도와주는 내비게이션 전용 태그입니다. HTML의 <a> 태그처럼 보이지만, 실제 동작은 다릅니다.


1. Link란?

<Link>는 react-router-dom에서 제공하는 컴포넌트로,
<a href="...">를 대체하며 브라우저 전체를 새로고침하지 않고도 URL 경로를 변경하고 해당 경로에 맞는 컴포넌트를 렌더링해줍니다.


2. 기본 사용법

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

function Home() {
  return (
    <div>
      <h1>홈</h1>
      <Link to="/about">About 페이지로 이동</Link>
    </div>
  )
}
  • to 속성은 이동하고자 하는 경로를 나타냄
  • 내부적으로 history.push()를 이용하여 경로를 바꿈
  • 브라우저 새로고침 없이 컴포넌트가 전환됨

3. 주요 특징

특징  설명
새로고침 없음 Link는 단순히 경로를 바꾸기만 하고, 전체 페이지를 다시 불러오지 않음
빠른 페이지 전환 SPA 방식으로 빠르게 컴포넌트 전환
CSS 클래스 지정 가능 일반 HTML 태그처럼 className, style 등 적용 가능

4. 예제: 라우터 포함 전체 코드

// App.tsx
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>
  )
}

export default App
// pages/Home.tsx
import { Link } from 'react-router-dom'

function Home() {
  return (
    <div>
      <h1>Home</h1>
      <Link to="/about">About으로 이동</Link>
    </div>
  )
}

export default Home
// pages/About.tsx
function About() {
  return <h1>About 페이지입니다</h1>
}

export default About

5. 주의할 점

  • Link는 반드시 <BrowserRouter>나 <HashRouter>로 감싸진 컴포넌트 안에서만 동작해야 함
  • to 속성에는 문자열 경로 또는 객체 { pathname, search, state } 도 사용할 수 있음

요약

속성 설명

to 이동할 경로 (문자열 또는 객체)
className, style HTML 태그처럼 사용 가능
기능 브라우저 리로드 없이 페이지 전환 수행

 

Link는 React Router에서 사용자 경험을 부드럽게 유지하면서 경로 전환을 구현할 수 있는 기본 도구입니다.

'프론트엔드 (TS, React) > React' 카테고리의 다른 글

React Query  (1) 2025.06.11
리액트 라우터 : navigate, nested routes, outlet  (1) 2025.05.16
리액트 라우터 : react-router-dom  (0) 2025.05.15
컴포넌트  (0) 2025.05.15
Vite 로 React + ts 설치  (0) 2025.05.15