WebProgramming/React

[React] 라우팅(react-router-dom)(useParams, Query)

2022. 7. 7. 15:24
목차
  1. 라우팅이란?
  2. 라우팅 순서
  3. React Router
  4. React Router의 기능들
  5. useParams
  6. Query

라우팅이란?

라우팅이란, 우리가 네트워크에서 특정 경로로 데이터를 보낼 때 사용되는 과정을 말합니다.

라우팅은 어떤 네트워크 안에서 데이터를 최적의 경로를 선택하는 과정을 말합니다. 여기서 최적의 경로는 최단거리가 될 수도 있고, 가장 빠른 시간에 전달하는 것으로 계산될 수 도 있습니다.

 

라우팅 순서

1. 브라우저에서 최초에 '/'경로로 요청을 하면,

2. React Web App을 내려줌

3. 내려받은 React App에서 '/'경로에 맞는 컴포넌트 보여줌

4. React App에서 다른 페이지로 이동하는 동작을 수행하면,

5. 새로운 경로에 맞는 컴포넌트를 보여줌

 

React Router

1. 설치

$ npm i react-router-dom

 

index.js

import * as React from "react";
import * as ReactDOM from "react-dom/client";
import App from "./App";
import "./index.css";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import MainPage from "./pages/MainPage";

let rootElement = document.getElementById("root");
ReactDOM.createRoot(rootElement).render(
  <BrowserRouter>
    <Routes>
      <Route path="/" element={<App />}>
        <Route path="/" element={<MainPage />} />
      </Route>
    </Routes>
  </BrowserRouter>
);

우리가 설치한 react-router-dom으로부터 BrowserRouter, Routes, Route를 import 해줍니다.

BrowserRouter > Routes > Route순으로 넣어주고, Route의 속성으로는 path와 element가 있습니다.

path는 주소 경로이고, element는 연결할 Compoent 요소입니다.

 

 

App.js

import * as React from "react";
import { Link, Outlet } from "react-router-dom";

export default function App() {
  return (
    <div>
      <h1>Bookkeeper</h1>
      <nav
        style={{
          borderBottom: "solid 1px",
          paddingBottm: "1rem",
        }}
      >
        <Link to="/invoices">Invoices</Link> |{" "}
        <Link to="/expenses">Expenses</Link>
      </nav>
      <Outlet />
    </div>
  );
}

react-router-dom으로부터 Link를 import해줍니다.

Link태그의 속성으로는 to가 있습니다.

to는 주소 경로를 가리킵니다.

<Outlet />을 nav뒤에 놓아줌으로써, 자식 route인 Invocies 혹은 Expenses를 클릭해도 부모 route인 App.js는 남아있습니다.

 

React Router의 기능들

useParams

# App.js

<Route path="diary" element={<Diary />}>
  <Route path=":id" element={<Diary />} />
</Route>

# Diary.js

import { useParams } from "react-router-dom";
const Diary = () => {
  const { id } = useParams();
}

->/diary/id -> id에 들어온 값을 Diary.js에서 활용합니다. ex) /diary/5, /diary/13

라우터에서는 path속성에 :변수명을 추가해줍니다.

링크에서는 react-router-dom에서 useParams를 import 해줍니다.

const { id } = useParams()로 전달받아, 앞으로 id 변수명으로 사용할 수 있습니다.

 

Query

; 웹 페이지에 데이터를 전달하는 가장 간단한 방법

# Edit.js

import { useSearchParams } from "react-router-dom";
const Edit = () => {
  const [searchParams, setSearchParams] = useSearchParams();
  const id = searchParams.get("id");
  return(
    <div>
      <buttion
        onClick={() => {
          setSearchParams({who:"guesung"})
        }}
      >변경</button>
    </div>
  )
}

react-router-dom으로부터 useSearchParams를 import해줍니다.

const [searchParams, setSearchParams] = useSearchParams로 배열을 비구조화 할당해줍니다. searchParams는 앞으로 사용할 변수명이고, setSearchParams는 앞 변수를 변경시켜주는 함수입니다.

setSearchParams({who : "guesung"})인 버튼을 누르면, /edit 였던 주소가, /edit?who=guesung으로 바뀝니다.

저작자표시 (새창열림)

'WebProgramming > React' 카테고리의 다른 글

[React] useNavigate를 이용하여 사이트 이동하는 버튼 만들기  (0) 2022.07.08
[React] 최신 순 / 오래된 순 정렬  (0) 2022.07.08
[React] useState로 input 상태 관리하기  (0) 2022.07.07
[React] MyButton을 만들어 재활용하기  (0) 2022.07.07
[React] Hook  (0) 2022.07.07
[React] 부모 Component -> 자식 Component에게 함수/리스 전달하기  (0) 2022.07.04
[React] 자식 Component -> 부모 Component로 데이터 전달하기  (0) 2022.07.04
[React] List Rendering  (0) 2022.07.03
  1. 라우팅이란?
  2. 라우팅 순서
  3. React Router
  4. React Router의 기능들
  5. useParams
  6. Query
'WebProgramming/React' 카테고리의 다른 글
  • [React] useState로 input 상태 관리하기
  • [React] MyButton을 만들어 재활용하기
  • [React] Hook
  • [React] 부모 Component -> 자식 Component에게 함수/리스 전달하기
피터s
피터s
1년차 프론트엔드 개발자입니다 😣 아직 열심히 배우는 중이에요! 리액트를 하고있어요 :) - gueit214@naver.com - https://github.com/gueit214
피터s
피터의 성장기록
피터s
전체
오늘
어제
  • 분류 전체보기 (200)
    • 코딩 테스트 (25)
      • 프로그래머스 (16)
      • LeetCode (8)
      • 백준 (1)
    • 개발 독서 일지 (1)
    • 기업 분석 (4)
    • 개발 일지 (19)
      • 최신기술 도전기 (1)
      • 에러 처리 (5)
      • 개발 일지 (12)
    • 개발 일상 (36)
      • 개발 회고 (22)
      • 개발 이야기 (12)
      • 개발 서적 (1)
    • 취업 관련 지식 (11)
    • 알고리즘 (17)
    • WebProgramming (84)
      • WebProgramming (8)
      • HTML (5)
      • CSS (8)
      • JS (21)
      • React (40)

블로그 메뉴

  • About
  • 2022년 개발 성장기
  • 앞으로의 계획
  • github
  • 일상 blog

공지사항

인기 글

태그

  • Retry
  • 누적합
  • 개발 is life
  • 구름톤
  • 개발 회고
  • Union-find
  • 해커톤
  • KAKAO BLIND
  • 개발 일상
  • 함수
  • BFS
  • 스터디 후기
  • 카카오 채용연계형 인턴십
  • Kakao Tech Internship
  • lv3
  • 1년 회고
  • dfs
  • 반복문
  • 카카오
  • LV2
  • 구름
  • 1일 1커밋 후기

최근 댓글

최근 글

hELLO · Designed By 정상우.
피터s
[React] 라우팅(react-router-dom)(useParams, Query)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.