목차

    불편함을 코드로 지웁니다.

    개발 공부 노트, 개발 도구와 문제를 해결한 과정, AI 프롬프트와 Obsidian 활용법을 정리합니다.

      ⏳ Time Log/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 방어 로직: 검색 조건이 없는 상태에서 상세페이지 진입 시 발생하는 런타임 에러 예외 처리 적용