- 가상 DOM 은 메모리에 존재하는 가상의 복사본으로서, 실제 DOM과 유사한 트리구조를 갖는다.
- 화면이 어떤 모습이어야 하는지 개발자가 작성한 내용과 실제 화면에 렌더링되는 것 사이에 존재하는 레이어에 해당된다.
일반적으로 브라우저에서 상호작용하는 UI를 렌더링하기 위해선 개발자는 반드시 브라우저의 DOM (Document Object Model) 을 수정해야 한다.
하지만, 과도한 DOM 수정은 심각한 성능 저하를 유발한다.
이를 위해 React 는 가상 DOM 개념을 사용하여 효율적인 UI 업데이트를 가능하게 한다.
'페이지의 변화를 바로 렌더링하지 않고, 먼저 메모리에 존재하는 가상 DOM에서 변화가 필요한 곳을 계산하고 필요한 최소한의 변경사항만 렌더링' 한다.
다음과 같이 React 가 동작한다.
- UI를 조작하고 비즈니스 로직 처리를 담당한다.
- '싱글 스레드' 로 동작하며, 비동기 작업을 처리하는 데에도 사용된다.
기본적으로 React Native 어플리케이션은 JavaScript 엔진 에서 실행된다는 것을 알아야한다.
- JavaScript 스레드 외에도 Native 스레드를 사용하여 UI 컴포넌트를 렌더링한다.
- iOS 에서는
Objective_C
/Swift
를 실행시키고 Android 에서는Java
/Kotlin
과 같은 네이티브 코드를 실행시킨다.- UI 이벤트 처리, 애니메이션, 네트워크 요청 등과 같은 네이티브 기능을 담당한다.
- React Native 는 JavaScript 스레드 와 Native 스레드 사이의 통신을 담당한다.
React Native는 실제 네이티브 UI 컴포넌트를 사용하여 어플리케이션을 렌더링한다.
즉, iOS 의 Objective-C
와 Android 의 Java
언어의 API를 호출하여 네이티브의 컴포넌트를 렌더링한다. 이는 웹 기반의 화면으로 최종 렌더링되는 대부분의 크로스 플랫폼 앱 개발 방법들과 구별되는 React Native 만의 특징이다.
React 컴포넌트는 렌더 함수 (return) 에서 어떻게 보여야 하는지 설명되어 있는 마크업을 전달한다.
<view>
➡️ UIVIEW
)가상 DOM 개념을 사용하지 않고 실제 네이티브 UI 컴포넌트를 사용하므로 성능이 더욱 향상된다.