[Android] JetPack Compose ViewModel이 필수적인 이유/UI에 상태 관리하면 생기는 문제

2025. 6. 24. 17:51·Java

 Composable은 'UI만 그린다'

 

부작용은 ViewModel이나 외부에서 처리한다

Composable 안에서 직접 SharedPreferences나 DB를 만지지 말라

 

이게 안드로이드의 권장 방식이다.

권장 방식은 따르는 게 맞다.

 

 

 

 

부작용이란?

= UI를 그리는 것 외에, 다른 것을 변경하는 작업

예) SharedPreferences 쓰기, ViewModel 데이터 수정 등.

 

로컬 변수의 값 변경

예) Compose함수 안에서 items++ 후 이 값을 UI에 표시

 

 

 

부작용을 왜 Composable에서 하면 안되는가?

한 파일에 하면 편하지 않나 의문이 들 수 있다.

하지만, 

Composable이 디자이너,

ViewModel이 개발자라고 생각하면 편하다.

 

 

화면 디자인 업무를 맡은 사람에게 데이터 저장, DB 설계, 상태관리까지 요구하면 어떻게 되는가.

과부하가 온다.

할 게 너무 많으니 우선 디자인부터 하고 저걸 하면 느리다.

그래서 역할을 나눈 거다.

Compose함수는 애니메이션 등 자주 실행되는 함수이기에 속도가 빨라야 하는데 부작용을 실행하면

느려지거나 이상한 동작을 할 수 있기 때문이다.

 

 

Composable에서는 UI만 그리고, UI에서 업데이트해야할 데이터와 상태는

ViewModel에서 업데이트된 경우에만 Composable에서 재구성하여 반영한다.

 

 

전체적인 흐름

ViewModel이 외부에서 가져온 데이터를 Composable에 전달해서 받은 후

Composable에서 콜백 함수 또는 값을 전달하면 즉, 이벤트를 발생시키면 ViewModel이 저장하고 처리함.

상태가 바뀌었으니 Compose가 다시 재구성함 → UI 자동 반영

 

결론은 Composable에서 상태를 변경하는 게 아니라

ViewModel에서 변경된 상태를 Composable에서 인식 후 자동 반영한다는 것이다.

저작자표시 (새창열림)

'Java' 카테고리의 다른 글

[Do it! 알고리즘 코딩 테스트 자바] 시간복잡도/디버깅/오답 유형(1~2일차)  (0) 2026.02.25
[Android] JetPack Compose Compose 단계/앱개발자가 화면이 그려지는 과정을 알아야 하는 이유  (0) 2025.06.25
[Android] JetpackCompose을 사용하는 이유/Composable란  (0) 2025.06.23
[백준] 11047번 동전 0 - 그리디 알고리즘 / 탐욕 알고리즘  (0) 2023.09.12
[백준] 1920번 수 찾기 - 이진 탐색 알고리즘/ 함수 이용(재귀X)  (0) 2023.09.06
'Java' 카테고리의 다른 글
  • [Do it! 알고리즘 코딩 테스트 자바] 시간복잡도/디버깅/오답 유형(1~2일차)
  • [Android] JetPack Compose Compose 단계/앱개발자가 화면이 그려지는 과정을 알아야 하는 이유
  • [Android] JetpackCompose을 사용하는 이유/Composable란
  • [백준] 11047번 동전 0 - 그리디 알고리즘 / 탐욕 알고리즘
미우딩
미우딩
다양한 프로그래밍 언어를 공부하고 있는 공대생입니다! Python, Java, C언어를 주로 공부하고 있으며 Figma를 통한 디자인도 종종 올릴 예정입니다.
  • 미우딩
    미우의 코딩 기록
    미우딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • Java (47)
      • C언어 (0)
      • 대외활동 (5)
      • Spring (4)
      • 프로젝트 (2)
      • 앱개발 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IT #코딩테스트 #알고리즘 #슬라이딩윈도우 #투포인터 #함수
    IT #코딩테스트 #알고리즘 #DFS #재귀함수 #무방향그래프
    java #android #개발자
    IT #큐 #알고리즘 #코딩테스트 #자바 #선입선출
    IT #BFS #코딩테스트 #구현 #큐 #재귀함수
    IT #알고리즘 #코딩테스트 #퀵정렬 #오름차순정렬
    IT #코딩테스트 #알고리즘 #투포인터 #시간제한 #Scanner #BufferedReader #StringTokenizer
    android #java #kotlin #상태관리
    android #java #kotlin #compose
    IT #알고리즘 #코딩테스트 #우선순위큐 #힙 #절댓값 #오름차순 #정렬
    IT #알고리즘 #코딩테스트 #삽입정렬 #오름차순정렬
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #평균구하기
    BufferedReader
    IT #백준 #코딩테스트 #알고리즘 #구간합 #반복문
    IT #코딩테스트 #이진탐색 #알고리즘
    IT #코딩테스트 #알고리즘 #백준 #투포인터 #배열
    IT #백준 #알고리즘 #코딩테스트 #배열 #형변환 #아스키코드
    push #pop #StringBuffer
    Spring #정적컨텐츠 #MVC #템플릿엔진 #API #애너테이션
    IT #코딩테스트 #알고리즘 #버블정렬 #오름차순
    IT #알고리즘 #그리디알고리즘 #탐욕알고리즘 #코테
    IT #알고리즘 #코딩테스트 #DFS
    IT #코딩테스트 #알고리즘 #스택 #
    IT #알고리즘 #코딩테스트 #선택정렬 #내림차순정렬 #최댓값
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
미우딩
[Android] JetPack Compose ViewModel이 필수적인 이유/UI에 상태 관리하면 생기는 문제
상단으로

티스토리툴바