리액트 vs flutter 렌더링 차이
맞아요! 이 부분을 헷갈리는 분이 많아요. 😄
React에서 말하는 리렌더링, 브라우저 새로고침(세로고침), 그리고 라우팅 페이지 전환은 서로 다릅니다.
1️⃣ 리렌더링 (Re-rendering)
- 정의: React 컴포넌트가 상태(state)나 props가 바뀔 때 UI를 다시 그리는 과정
- 브라우저 전체 새로고침 X
- 필요한 부분만 Virtual DOM 비교 후 실제 DOM에 업데이트
- 즉, div 하나만 바뀌어도 React는 최소한만 갱신함
예시
function Counter() {
const [count, setCount] = React.useState(0);
return (
<div>
<p>{count}</p> {/* 이 부분만 업데이트 */}
<button onClick={() => setCount(count + 1)}>+</button>
</div>
);
}
- 버튼 클릭 →
count상태 변경 →<p>{count}</p>만 변경 - 페이지 전체 새로고침 X
2️⃣ 페이지 새로고침 (Browser Refresh)
- 정의: 브라우저 자체 F5, Ctrl+R 같은 새로고침
- 특징:
- React가 아니라 브라우저가 전체 HTML/CSS/JS를 다시 불러옴
- 상태 초기화 → React
useState도 초기값으로 돌아감
- 느리고, SPA에서는 최소화
3️⃣ 라우팅(Routing)
- 정의: SPA에서 페이지 전환처럼 보이게 하지만 실제로는 컴포넌트 교체
- React Router 같은 라이브러리를 사용
- 특징:
- 브라우저 전체 새로고침 없이 URL 변경
- 새로운 페이지 컴포넌트 렌더링
- 기존 상태 유지 가능 (예: 상위 컴포넌트 state)
🔹 차이 요약
| 구분 | 정의 | 전체 페이지 영향 | 특징 |
|---|---|---|---|
| 리렌더링 | 상태/props 변경 → 컴포넌트 UI 업데이트 | X | Virtual DOM 기반 최소 변경 |
| 새로고침 | 브라우저 F5 | O | 모든 JS/CSS 다시 로드, 상태 초기화 |
| 라우팅 | URL 변경 → 다른 페이지 컴포넌트 렌더 | X (SPA) | URL은 바뀌지만 브라우저 새로고침 없음, 필요한 컴포넌트만 렌더 |
💡 한 줄 요약
리렌더링 = React 내부 UI 갱신
세로침 = 브라우저 전체 새로고침
라우팅 = 페이지 전환처럼 보이는 컴포넌트 교체
원하면 제가 그림으로 리렌더링 vs 새로고침 vs 라우팅 비교해서 보여드릴 수도 있어요.
한눈에 보면 SPA 동작 방식이 직관적으로 이해됩니다.
그림으로 보여드릴까요?
거의 비슷한 원리지만 React와 Flutter는 렌더링 구조와 상태 관리 방식이 조금 다릅니다. 😎
---
1️⃣ Flutter의 렌더링 구조
Flutter는 위젯(Widget) 단위로 UI를 구성
상태(State)가 바뀌면 해당 위젯만 다시 빌드(Build)
→ React의 리렌더링과 유사
전체 앱이 새로고침되는 게 아님
Flutter는 브라우저가 아니라 자체 렌더링 엔진(Skia) 사용
예시
class CounterWidget extends StatefulWidget {
@override
_CounterWidgetState createState() => _CounterWidgetState();
}
class _CounterWidgetState extends State<CounterWidget> {
int count = 0;
@override
Widget build(BuildContext context) {
return Column(
children: [
Text('$count'),
ElevatedButton(
onPressed: () {
setState(() {
count += 1; // 상태 변경 → build() 재실행
});
},
child: Text('+'),
),
],
);
}
}
setState 호출 → build() 재실행 → 필요한 위젯만 UI 갱신
React에서 useState → 리렌더링과 유사
---
2️⃣ Flutter에서 페이지 전환
Navigator를 사용해 페이지 이동
기존 위젯 트리는 그대로 유지 가능 → SPA처럼 작동
전체 앱 새로고침은 아님
Navigator.push(
context,
MaterialPageRoute(builder: (context) => NextPage()),
);
---
3️⃣ React vs Flutter 비교
항목 React Flutter
UI 단위 컴포넌트 위젯
상태 관리 useState, Redux 등 setState, Provider, Riverpod 등
렌더링 Virtual DOM → 실제 DOM 최소 변경 build() → 렌더링 엔진에서 최소 변경
페이지 전환 React Router, SPA Navigator, 위젯 교체
전체 새로고침 브라우저 F5 앱 재실행 필요 (Hot Reload는 개발용)
---
💡 핵심 요약
React에서 리렌더링 = Flutter에서 build() 재실행
둘 다 상태가 바뀌면 필요한 UI만 갱신
둘 다 SPA처럼 전체 페이지 새로고침 없이 화면 갱신 가능
---
원하면 제가 React vs Flutter 상태/렌더링 흐름 비교 그림으로 보여드릴 수도 있어요.
그림으로 보면 구조 차이가 직관적으로 한눈에 보입니다.
그림으로 보여드릴까요?
댓글
댓글 쓰기