모바일 개발 · 중급
React Native 애플리케이션에서 `Context API`와 `Redux` (또는 MobX와 같은 전역 상태 관리 라이브러리)의 차이점을 설명하고, 각각 어떤 상황에 더 적합하다고 판단하시나요?
힌트 · Context API는 가벼운 상태 공유에 적합하며, Redux는 복잡하고 대규모 애플리케이션의 예측 가능한 상태 관리에 유리합니다.
Context APIRedux전역 상태 관리복잡성성능 최적화
모범답안
네, React Native에서 Context API와 Redux는 모두 전역 상태 관리를 위한 도구이지만, 사용 목적과 복잡성에서 차이가 있습니다.
Context API는 애플리케이션 내에서 데이터를 공유하기 위한 React의 내장 기능입니다. 사용법이 비교적 간단하고, 작은 규모의 애플리케이션에서 전역적으로 필요한 설정 정보나 테마 정보 등을 공유할 때 유용합니다. 하지만 Context를 사용하는 컴포넌트가 많아질수록 성능 문제가 발생할 수 있고, 상태 변화 추적이 어렵다는 단점이 있습니다.
반면 Redux는 더 강력하고 예측 가능한 상태 관리를 위한 라이브러리입니다. 액션, 리듀서, 스토어라는 명확한 구조를 통해 상태 변화를 예측 가능하게 만들고, 미들웨어를 통해 비동기 작업 처리나 로깅 등의 기능을 추가할 수 있습니다. 하지만 설정이 복잡하고, 작은 변화에도 많은 코드를 작성해야 한다는 단점이 있습니다. 따라서 애플리케이션의 규모가 크고, 상태 관리가 복잡하며, 여러 컴포넌트 간의 데이터 흐름이 빈번할 때 Redux를 사용하는 것이 더 적합하다고 생각합니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 React Native 면접 질문
- React Native 함수형 컴포넌트에서 `useEffect` Hook은 주로 어떤 목적으로 사용되며, 의존성 배열의 역할에 대해 설명해주세요.
- React Native 컴포넌트에서 `useEffect` 훅의 의존성 배열(dependency array)과 클린업(cleanup) 함수를 사용하여 발생할 수 있는 일반적인 메모리 누수나 불필요한 재실행 문제를 어떻게 방지할 수 있나요?
- React Navigation 라이브러리에서 `Stack Navigator`와 `Tab Navigator`의 주요 차이점은 무엇이며, 각각 어떤 사용자 경험을 제공할 때 더 적합하다고 생각하시나요?
- React Native에서 `StyleSheet.create`를 사용하여 스타일을 정의하는 것이 인라인 스타일이나 일반 JavaScript 객체를 직접 사용하는 것보다 어떤 이점들이 있나요?
- `FlatList` 컴포넌트의 성능을 최적화하기 위한 방법들을 3가지 이상 설명하고, 각 방법이 어떤 원리로 성능 향상에 기여하는지 구체적으로 설명해주세요.
- React Native에서 JavaScript 코드와 네이티브 모듈(Java/Kotlin for Android, Objective-C/Swift for iOS) 간의 통신 원리에 대해 설명하고, 네이티브 모듈을 언제 사용해야 하는지 예시를 들어주세요.