피드로 돌아가기
Dev.toFrontend
원문 읽기
단일 React 컴포넌트로 PDF부터 코드까지 통합 렌더링 체계 구축
One Viewer for Every File: A Better Story for React Apps
AI 요약
Context
다양한 파일 포맷(PDF, DOCX, JSON 등)을 개별 뷰어로 처리하며 발생하는 UI 파편화와 비즈니스 로직의 복잡성 증대. 파일 확장자별로 분기되는 조건부 렌더링 구조로 인해 일관된 UX 제공 및 유지보수 효율성 저하.
Technical Solution
fileName기반의 자동 타입 감지 및 렌더링 경로 결정 로직을 통한 단일 진입점(FileViewer) 설계- 다중 파일 포맷을 하나의 Mental Model로 통합하여 테마, 검색, 선택 인터페이스의 일관성 확보
searchMode프로퍼티를 통한 외부 컨트롤러 중심의 Global Search 인터페이스 연동 구조 구현onTextSelect콜백을 통해 뷰어 내부의 텍스트 선택 메타데이터(파일ID, 페이지, 라인 번호)를 부모 애플리케이션으로 전달하는 이벤트 기반 설계- 이미지, 문서, 코드 등 서로 다른 렌더링 엔진을 하나의 추상화 레이어로 묶어 통합 인터페이스 제공
실천 포인트
- 다양한 파일 뷰어 도입 시 개별 라이브러리 조합보다 단일 추상화 레이어(Wrapper) 설계를 우선 검토 - 뷰어 내부 상태(선택 영역, 검색어)를 부모 컴포넌트와 동기화하여 Review/Annotation 기능으로 확장 가능한 구조 설계 - 확장자 기반의 동적 렌더링 전략을 통해 조건부 렌더링 분기점을 최소화하고 선언적 UI 패턴 적용