새소식

FE/React

[React] React Router DOM: Link 태그와 useNavigate의 차이

  • -

🍎 React-Router를 사용하는 이유

 

프로젝트를 진행하면서 React Router Dom을 사용하면 React 애플리케이션 내에서 페이지 간 이동을 쉽게 구현할 수 있다.

기존 <a>태그를 사용할 경우, 페이지 전체가 새로 로딩된다.

이는 화면 깜빡임이 필수적으로 발생하고, 이는 사용자 경험을 떨어뜨릴 수 있다!

 

React-Router를 사용하면, 라우팅을 통해 부드러운 화면 전환이 가능해진다.

즉, SPA 사용자 경험 향상을 위해 React Router를 사용하는 것이다.

 

Router의 종류에는 HashRouter, BrowserRouter가 있다. 

나는 주로 BrowserRouter를 사용하여 개발을 해왔다.

 

+) 이전에 하루네컷 서비스를 진행할 때, 배포 후 로그인 기능에서 리다이렉트가 안되는 문제를 해결하기 위해 HashRouter로 코드를 수정해 본 적이 있다.(아래 포스팅 참고해서) 비록 문제는 다른 곳에 있었지만,,,

https://velog.io/@zh025700/gh-pages-%EB%B0%B0%ED%8F%AC%EC%97%90%EC%84%9C-kakao-login-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

 

gh-pages 배포에서 kakao login 사용하기

공모전 프로젝트에서 카카오 로그인을 사용해 로그인을 구현했다.이 프로젝트에서는 BrowserRouter를 이용해 라우팅을 구현했는데, gh-pages에 이 프로젝트를 배포하니 카카오 로그인의 리다이렉트 u

velog.io

 

 

어쨌든, 다시 본론으로 돌아가면, React Router Dom을 통해 페이지 이동을 구현할 때 사용하는 방법에는 두 가지가 있다.

1. Link 태그

2. useNavigate

 

프로젝트를 통해 두 가지 모두 경험해봤지만, 왜 해당 방법을 쓰는지 깊게 생각해보지는 않았다. 아래 내용부터는 둘의 차이점을 중점적으로 다루어보려고 한다.

 

 

🍎 Link 태그

Link 태그는 HTML의 a 태그와 유사하지만, 페이지 전체를 다시 로드하지 않고도 클라이언트 측에서 페이지를 전환할 수 있게 해준다. 

사용자 인터페이스 안에서 링크를 만들어, 사용자가 클릭했을 때 다른 페이지로 이동할 수 있다.

 

예시 코드는 아래와 같다!

import React from 'react';
import { BrowserRouter as Router, Route, Routes, Link } from 'react-router-dom';

const Home = () => <h2>Home Page</h2>;
const About = () => <h2>About Page</h2>;

const App = () => {
  return (
    <Router>
      <div>
              <Link to="/">Home</Link>
              <Link to="/about">About</Link>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
        </Routes>
      </div>
    </Router>
  );
};

export default App;

 

🍎 useNavigate 훅

useNavigate 훅은 프로그래밍 방식으로 페이지 전환을 제어할 수 있게 해준다.

이 훅은 함수 컴포넌트 내에서 다른 페이지로 이동하는 기능을 구현할 때 유용합니다.

예를 들어, 버튼 클릭 이벤트 핸들러나 기타 논리적 조건에 따라 페이지를 전환하고자 할 때 사용할 수 있다.

 

예시코드는 아래와 같다.

import React from 'react';
import { BrowserRouter as Router, Route, Routes, useNavigate } from 'react-router-dom';

const Home = () => {
  const navigate = useNavigate();
  
  const goToAboutPage = () => {
    navigate('/about');
  };
  
  return (
    <div>
      <h2>Home Page</h2>
      <button onClick={goToAboutPage}>Go to About Page</button>
    </div>
  );
};

const About = () => <h2>About Page</h2>;

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

export default App;

 

 

🤔 차이점 정리

  Link 태그 useNavigate 훅
사용 용도 Link 태그는
사용자 인터페이스(UI)에서 하이퍼링크를 만드는 데
사용된다.

즉, 웹 페이지에서
직접 사용자가 클릭할 수 있는 링크를 생성할 때 사용
프로그래밍 방식으로 페이지 전환을 제어하는 데 사용된다.

즉, 링크를 클릭하는 대신 코드 내에서 특정 조건이나 이벤트에 따라 페이지를 전환할 수 있다!
사용 방법 JSX 내에서
링크를 만들 때 사용
함수 컴포넌트 내에서 다른 페이지로 이동하는
로직을 구현할 때 사용
장점  단순하고 직관적이며,
사용자 인터페이스에서 링크를 쉽게 추가할 수 있음
동적인 네비게이션 로직을 구현할 수 있어
다양한 조건에 따라 페이지 전환을 제어할 수 있다.

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.