목차

    ⏳ Time Log/1. One Day (Daily · TIL)

    Day 41 (12/15) - 종일 프로젝트

    this.Serena 2026. 2. 23. 02:33

    🎨 Creative Archive: React 포트폴리오 프로젝트 정리

    핵심 요약: React와 Redux Toolkit을 활용한 카탈로그형 포트폴리오 웹사이트 개발 과정 및 핵심 설계 전략 요약

     


    📝 프로젝트 개요 및 목적

    • 프로젝트명: Creative Archive (크리에이티브 아카이브)
    • 한 줄 소개: React로 구현한 개인 디자인 포트폴리오 아카이빙 웹사이트
    • 개발 기간: 2025-12-15 ~ 2025-12-19 (총 5일)
    • 주요 목적:
      • React 컴포넌트 설계 및 상태 관리 실무 능력 배양
      • 카탈로그형 UI 패턴(목록 → 상세) 구현 및 반응형 레이아웃 적용
      • 필터링, 검색, 정렬 등 사용자 인터페이스 편의 기능 실습

    🎯 주요 기능 및 특징

    • 홈 페이지: 디자인 작업물 카드 그리드 레이아웃 구성
    • 카테고리 필터: 뉴스레터, 브로슈어, 인포그래픽 등 분류 기능
    • 검색 및 정렬: 제목/설명 기반 키워드 검색 및 최신순/제목순 정렬
    • 상세 페이지: 대형 이미지 갤러리 및 프로젝트 상세 정보 제공
    • 반응형 디자인: 모바일, 태블릿, 데스크톱 최적화 대응
    • 추가 기능: 즐겨찾기(북마크) 기능 구현 (선택 사항)

    🛠️ 기술 스택 및 개발 환경

    • 기본 환경: Vite (Build Tool), React (Library)
    • 상태 관리: Redux Toolkit, react-redux (전역 상태 관리 및 Props Drilling 방지)
    • 라우팅: react-router-dom (페이지 전환 및 경로 관리)
    • 라이브러리:
      • Axios: API 통신 및 데이터 요청
      • UUID: 각 포트폴리오 아이템의 고유 ID 생성
      • Date-fns: 날짜 포맷 및 정렬 로직 처리

    📂 프로젝트 구조 및 설계 패턴

    1. 디렉토리 구조 (src)

    • components: 재사용 가능한 UI 조각 (Header, Footer, Hero, WorkCard 등)
    • pages: 라우트 단위의 화면 구성 (Home, Detail, About, Contact 등)
    • layouts: 공통 레이아웃 (Header/Footer + <Outlet />)
    • store: Redux 전역 상태 및 Slice 정의
    • routes: 라우팅 구조 정의 (AppRouter.jsx)

    2. 컴포넌트 설계 전략

    • Presentational & Container 패턴: UI 렌더링(Hero)과 데이터 로직 처리(Home) 역할 분리
    • Pages/Components 분리: 라우트 매핑 화면과 재사용 UI 조각의 명확한 구분
    • Pure Component: 비즈니스 로직 없이 UI만 그리는 순수 컴포넌트 적극 활용

    💡 핵심 개념 및 트러블슈팅

    1. React 개발 핵심 가이드

    • Fragment 문법: 컴포넌트 return 시 최상위 요소는 반드시 하나의 태그로 묶음
    • 컴포넌트 명명: 식별을 위해 반드시 대문자로 시작
    • 상태 관리: 재렌더링이 잦은 UI나 반복 출현 요소는 컴포넌트화하여 관리

    2. 정적 자원 관리 (public vs src)

    • public 폴더: * 빌드 시 복사만 수행, 파일명 고정
      • 이름 변경이 안 되는 파일이나 대량의 이미지 동적 참조 시 활용
    • src 폴더:
      • Webpack/Vite 최적화 대상, hash 파일명으로 캐싱 문제 해결
      • 소용량 이미지 및 컴포넌트 내 import 자산 관리에 최적화

    3. JSX 문법 및 표현식

    • JS 표현식: React 내에서 JavaScript 코드를 실행할 때는 {}로 감싸서 처리
    • JSX 태그: 컴포넌트 호출 시 <ComponentName /> 형태의 태그 문법 사용

    🚀 주요 이슈 해결 (Troubleshooting)

    • 검색 파라미터 유지: 상세페이지에서 목록으로 이동 시 검색어 초기화 문제 해결을 위한 URL 쿼리 스트링 연동
    • Git 배포 CSS 에러: 배포 환경에서의 스타일 시트 경로 및 렌더링 오류 수정 완료 (2025-12-23)
    • Null 방어 로직: 검색 조건이 없는 상태에서 상세페이지 진입 시 발생하는 런타임 에러 예외 처리 적용