피드로 돌아가기
One Viewer for Every File: A Better Story for React Apps
Dev.toDev.to
Frontend

단일 React 컴포넌트로 PDF부터 코드까지 통합 렌더링 체계 구축

One Viewer for Every File: A Better Story for React Apps

Naveen Kumar2026년 5월 12일7intermediate

Context

다양한 파일 포맷(PDF, DOCX, JSON 등)을 개별 뷰어로 처리하며 발생하는 UI 파편화와 비즈니스 로직의 복잡성 증대. 파일 확장자별로 분기되는 조건부 렌더링 구조로 인해 일관된 UX 제공 및 유지보수 효율성 저하.

Technical Solution

  • fileName 기반의 자동 타입 감지 및 렌더링 경로 결정 로직을 통한 단일 진입점(FileViewer) 설계
  • 다중 파일 포맷을 하나의 Mental Model로 통합하여 테마, 검색, 선택 인터페이스의 일관성 확보
  • searchMode 프로퍼티를 통한 외부 컨트롤러 중심의 Global Search 인터페이스 연동 구조 구현
  • onTextSelect 콜백을 통해 뷰어 내부의 텍스트 선택 메타데이터(파일ID, 페이지, 라인 번호)를 부모 애플리케이션으로 전달하는 이벤트 기반 설계
  • 이미지, 문서, 코드 등 서로 다른 렌더링 엔진을 하나의 추상화 레이어로 묶어 통합 인터페이스 제공

- 다양한 파일 뷰어 도입 시 개별 라이브러리 조합보다 단일 추상화 레이어(Wrapper) 설계를 우선 검토 - 뷰어 내부 상태(선택 영역, 검색어)를 부모 컴포넌트와 동기화하여 Review/Annotation 기능으로 확장 가능한 구조 설계 - 확장자 기반의 동적 렌더링 전략을 통해 조건부 렌더링 분기점을 최소화하고 선언적 UI 패턴 적용

원문 읽기