패스잇
모바일 개발 · 심화

React Native에서 제공하는 컴포넌트만으로는 구현하기 어려운 복잡하고 고성능의 커스텀 UI 컴포넌트(예: 고성능 차트, 복잡한 애니메이션을 포함한 맵 뷰)를 네이티브 수준에서 개발해야 할 때, View Manager를 사용하여 어떻게 설계하고 구현할 것인지 설명해 주세요. 특히, JavaScript와 네이티브 UI 간의 속성 동기화 및 이벤트 처리를 효율적으로 관리하는 방안을 제시해 주세요.

힌트 · UIManager를 통해 네이티브 뷰를 JS에 노출하고, RCTViewManager를 상속받아 뷰를 생성합니다. @objc 또는 exportViewProperty를 사용하여 속성을 동기화하고, RCTBubblingEventBlock으로 이벤트를 전달합니다.

ViewManagerUIResponder속성 동기화Native ModulesBridge

모범답안

React Native에서 고성능 커스텀 UI 컴포넌트 개발 시 View Manager를 활용하는 방안을 설명드리겠습니다.

먼저, 네이티브 UI 컴포넌트를 JavaScript에 노출하기 위해 RCTViewManager를 상속받는 네이티브 클래스를 작성합니다. 이 클래스는 UIManager를 통해 JavaScript와 통신하며, 네이티브 뷰의 생성 및 관리를 담당합니다.

속성 동기화는 @objc 또는 exportViewProperty 어노테이션을 사용하여 JavaScript에서 설정한 속성을 네이티브로 전달합니다. 예를 들어, 차트의 데이터나 애니메이션 속성 등을 네이티브 뷰에 설정할 수 있습니다.

이벤트 처리는 네이티브 뷰에서 발생한 이벤트를 JavaScript로 전달하기 위해 RCTBubblingEventBlock을 사용합니다. 예를 들어, 차트의 특정 부분을 탭하거나 맵 뷰에서 사용자의 인터랙션이 발생했을 때, 해당 이벤트를 JavaScript로 보내어 처리하도록 구현합니다.

이러한 방식으로 View Manager를 사용하면 JavaScript와 네이티브 간의 효율적인 통신을 통해 복잡하고 고성능의 커스텀 UI 컴포넌트를 개발할 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 React Native 면접 질문

← React Native 면접 질문 전체 보기