[번역] React Native의 스타일과 성능: 두 가지 장점 모두 활용하기

오성준·2024년 2월 13일
0

React Native

목록 보기
2/9
post-thumbnail

원문: https://medium.com/@fjmorant/styles-and-performance-in-react-native-unlocking-the-best-of-both-worlds-2263632a12bb

React Native는 초기부터 개발자들이 크로스 플랫폼 모바일 앱 개발에 접근하는 방식에 혁명을 일으켰습니다. React Native를 통해 모바일 앱 제작이 대중화되었지만, 앱의 스타일과 성능을 모두 보장하는 것은 지속적인 과제입니다. 이 글에서는 개발자가 두 가지 장점을 모두 달성할 수 있는 로드맵을 제공하기 위해 React Native의 스타일과 성능 간의 상호 작용에 대해 자세히 살펴봅니다.

1. React Native의 스타일링 소개

React Native는 기존 CSS를 버리고 고유한 스타일링 패러다임을 채택했습니다. 스타일은 기본적으로 자바스크립트 객체이며, 개발자는 style 프로퍼티를 사용하여 컴포넌트에 직접 스타일을 적용합니다.

2. 큰 논쟁: Inline 스타일 vs. StyleSheet

Inline 스타일: 스타일 객체를 컴포넌트에 직접 전달하는 것을 Inline 스타일링이라고 합니다. 이 방법은 특히 신속한 프로토타입 제작 시 간편함을 제공하지만 렌더링할 때마다 새 객체가 생성되므로 성능에 최적화되어 있지 않습니다.

StyleSheet: React Native는 네이티브 측에서 더 빠른 처리를 위해 내부적으로 스타일 객체를 더 최적화된 형식으로 변환하는 StyleSheet.create 메서드를 도입했습니다. 이 방식은 훨씬 더 성능이 뛰어나며 프로덕션 앱에 권장됩니다.

3. 일반적인 스타일링 관련 성능 병목 현상

  • 잦은 리렌더링: 과도한 Inline 스타일이나 조건부 스타일링은 불필요한 리렌더링을 유발하여 성능을 저하시킬 수 있습니다.

  • 심층 컴포넌트 중첩: 과도한 중첩은 긴 스타일의 프로퍼티 체인을 만들어 앱이 느리게 느껴질 수 있습니다.

  • 절대 위치 지정의 과도한 사용: 레이아웃에는 편리하지만 절대 위치 지정을 과도하게 사용하면 레이아웃을 자주 다시 계산해야 하므로 성능이 저하될 수 있습니다.

4. 스타일링 성능을 위한 모범 사례

  • StyleSheet 활용: 성능 향상을 위해 항상 Inline 스타일보다 StyleSheet.create를 사용하는 것이 좋습니다.

  • 동적 스타일을 위한 메모이제이션: 스타일이 프로퍼티나 상태에 따라 결정되는 경우 메모이제이션 기술을 사용하여 꼭 필요한 경우에만 스타일을 다시 계산하도록 합니다.

  • Flattening 스타일: 스타일에 배열을 사용하면 계산 비용이 많이 들 수 있습니다. 대신 StyleSheet.flatten을 사용하여 스타일 객체를 병합하세요.

  • 레이아웃 충돌 최소화: 너비 또는 높이 재계산과 같이 레이아웃을 자주 변경하는 스타일에 주의하세요.

5. 고급 도구 및 기술

  • React DevTools: 이 도구는 컴포넌트 렌더링 패턴에 대한 귀중한 인사이트를 제공하여 개발자가 스타일링의 비효율성을 발견할 수 있도록 지원합니다.

  • Why Did You Render?: 이 라이브러리는 불필요한 리렌더링에 플래그를 지정하여 종종 문제가 있는 스타일 재계산을 정확히 지적합니다.

  • React Native Performance Monitor: 개발자 메뉴에 내장된 이 도구는 JavaScript 스레드와 UI의 성능에 대한 인사이트를 제공하여 스타일링 병목 현상을 감지하는 데 도움을 줍니다.

6. JavaScript 그 이상의 단계: 네이티브 스타일링 솔루션

복잡한 스타일링이나 애니메이션이 필요한 경우 JavaScript로는 한계에 부딪힐 수 있습니다. 이때 네이티브 솔루션이 유용합니다:

  • Native Modules: 이를 통해 개발자는 Swift 또는 Java와 같은 언어로 플랫폼별 코드를 작성하여 복잡한 스타일링 작업에 네이티브 렌더링 엔진의 모든 기능을 활용할 수 있습니다.

  • React Native Reanimated: 이 라이브러리를 사용하면 대부분의 작업을 네이티브 측으로 오프로드하여 더 부드러운 애니메이션을 만들 수 있습니다.

7. Third-Party 스타일링 라이브러리: 득일까 실일까?

styled-componentstailwindcss와 같은 인기 있는 라이브러리가 React Native 생태계에 등장했습니다. 이러한 라이브러리는 우아한 스타일링 솔루션과 최적화를 제공하지만, 잠재적인 오버헤드를 염두에 두는 것이 중요합니다:

  • 오버헤드 비용: 일부 라이브러리는 사소하지 않은 성능 오버헤드를 추가합니다. 통합 후에는 항상 앱을 프로파일링하세요.

  • 종속: 특정 라이브러리에 크게 의존하면 공급업체에 종속되어 해당 라이브러리의 제품 이상으로 전환하거나 최적화하기가 어려워질 수 있습니다.

결론:

역동적인 React Native 개발 세계에서 스타일리시한 디자인과 최고의 성능 사이에서 조화로운 균형을 이루는 것은 외줄타기를 하는 것과 같습니다. 개발자는 React Native의 복잡한 스타일링 시스템을 이해하고, 올바른 도구와 기술을 활용하고, Third-Party 라이브러리를 신중하게 채택함으로써 미적으로 만족스럽고 빠른 애플리케이션을 제작할 수 있습니다. 모바일 앱 영역에서는 밀리초단위가 중요하며 스타일도 마찬가지입니다!

profile
React Native 개발자

0개의 댓글

관련 채용 정보