FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 코드스테이츠
  • ES6
  • css
  • HTML
  • Til
  • 타입스크립트
  • 원시타입
  • 프론트엔드
  • 자바스크립트 딥다이브
  • useMemo
  • 자바스크립트
  • seb39
  • 딥다이브
  • 신입개발자
  • 회고
  • 포트폴리오
  • 리액트
  • seb 39
  • 부트캠프
  • 메인프로젝트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN

완벽하지 않으면 어때

기록/코드스테이츠 프론트엔드

7주차 일요일 - react router dom, useParams

2022. 6. 12. 22:47
728x90

7주차 일요일 - react router dom, useParams

1. 배운 것

  • react-router-dom 복습 + 추가학습
    • react router dom Route의 동적 경로 지정 - 세미콜론, useParams Hook
    • 빈 페이지 컴포넌트를 만드는 이유

2. 내용 정리

React-router-dom

<Routes>
	<Route path="/" element={<Home />} />
</Routes>
  • 6버젼: Routes 와 각 Route의 path 지정과 element 속성으로 기존 Switch 안에서 exact path 지정을 대체하여 훨씬 간편해졌다.
  • HashRouter (경로에 # 이 들어간 것.) 사용 가능. 사용하려면 BrowserRouter 위치에 쓴다. (나중에 필요할 때 추가 공부하기)
  • a태그 href 대신 <Link to="경로"> 사용하여 새로고침 없이 재렌더링.
    • a태그 사용 시 onClick 이벤트에 핸들러함수 별도 지정 불가능. 경로 이동만 됨.
  • Link 대신 NavLink 사용 시 선택된 navigation 메뉴의 요소에 동적으로 active 클래스가 생성되어 선택된 nav menu 요소만 스타일링 줄 수 있음. 제어문으로 기본값 className인 active를 원하는 값으로 변경해줄 수도 있다. (나중에 필요할 때 추가 공부하기)
  • 잘못된 경로로 접근할 경우 보여질 빈 페이지를 지정해주어 대응시킨다.
      • : 모든 경로. path 속성을 *로 준 Route 컴포넌트는 다른 Route들 위에 있어선 안된다. 가장 아래에 있어야 다른 Route의 path를 덮어씌우지 않는다.
// 빈 페이지 컴포넌트 생성

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

export default function EmptyPage() {
  return (
    <>
      <h2>잘못된 접근입니다.</h2>
      <Link to="/">돌아가기</Link>
    </>
  );
}

// 빈 잘못된 경로 접근시 보여질 페이지 경로 설정

<Routes>
  <Route path="*" element={<EmptyPage />} />
</Routes>

React-router-dom - useParams Hook 으로 동적인 경로 처리

  • 경로에 변수를 사용하여 하나의 경로에서 경로를 계속 변경시켜줄수 있음.
  • 데이터인 JSON 파일의 각 요소 인덱스에 맞게 다른 경로로 보내주기 위해 아래 예제에서는 filter 메서드 안에서 useParams의 값을 숫자로 형변환시켜 사용함.
  • 사용법
    1. import해오기
    2. useParams 호출: 주의: 반환값은 string 타입이다. 숫자로 사용하려면 형변환할것.
    3. Route의 path 와 Link의 to 경로 수정
import dummy from '../database/data.json';
	// 1. import 해오기
import { useParams } from 'react-router-dom';

export default function Day() {
	// 2. useParams 호출
  const { day } = useParams();
	// const day = useParams().day;를 객체 디스트럭쳐링으로 변경함.

  const wordList = dummy.words.filter(word => word.day === Number(day)); // Number(day) 로 반환값 숫자타입으로 형변환.

  return (
    <>
      <h2>Day {day}</h2>
      <table>
        <tbody>
          {wordList.map(word => (
            <tr key={word.id}>
              <td>{word.eng}</td>
              <td>{word.kor}</td>
            </tr>
          ))}
        </tbody>
      </table>
    </>
  );
}
// 3. ':변수명'으로 Route와 Link 경로 수정

// Route (App컴포넌트 내부)
<Route path="/day/:day" element={<Day />} />

// Link (자식 컴포넌트 내부)
<Link to={`/day/${days.day}`}>Day {days.day}</Link>

참고 자료

- 코딩앙마님 유튜브 리액트 강의
- 리액트 라우터 사용방법

3. 리뷰

3.1 좋았던 점

  • 연습용 앱에 express 서버 붙여봤다.

3.2 아쉬웠던 점

  • 그냥 진짜 붙이기만 했다. ajax 예습하고 싶었는데 못했다.

3.3 notes

티스토리에서 md파일 인라인 코드블록이 안먹어서, 또 다른 자잘한 문제로 글이 영 보기 안이쁘다.
벨로그로 다시 갈아타야 하나 고민이다. 티스토리를 갈아엎자니 시간이 없고.
여태 불렛포인트를 너무 남발했던것 같다. 마크다운 작성시 불렛포인트를 줄여야 겠다.
벨로그 글들 보다 내 글 보니 아무리 나만 보면 되는 Til이어도 너무 가독성이 안좋더라.
딥다이브 책 너무 어렵다.

4. 할 일

  • useEffect 공부
  • 값이 두번 찍히는 이유(stopPropagation)
  • key 값으로 적절한 값
728x90
저작자표시 비영리 변경금지 (새창열림)

'기록 > 코드스테이츠 프론트엔드' 카테고리의 다른 글

8주 2일차 - Effect Hook  (0) 2022.06.14
8주 1일차 - HTTP/네트워크 실습  (0) 2022.06.14
7주차 토요일 - 리액트 복습  (0) 2022.06.11
7주 5일차 - REST API, 타입스크립트, 이진 탐색  (0) 2022.06.10
7주 4일차 - 네트워크 기초  (0) 2022.06.09
    '기록/코드스테이츠 프론트엔드' 카테고리의 다른 글
    • 8주 2일차 - Effect Hook
    • 8주 1일차 - HTTP/네트워크 실습
    • 7주차 토요일 - 리액트 복습
    • 7주 5일차 - REST API, 타입스크립트, 이진 탐색
    FE RYAN
    FE RYAN

    티스토리툴바