Unidirectional Data Flow (단방향 데이터 흐름)

MJ·2023년 7월 11일
0

Jetpack Compose Basic

목록 보기
3/4
  • Compose의 UI는 수정될 수 없음.
  • UI 상태가 변경될 때만 변경된 UI 트리를 다시 만듬.
  • ex) TextFiled는 값을 받고 onValueChange를 반환함. TextFiled가 상태를 같는게 아닌 다른 만들어놓은 값이 가짐
  • 상태 반환 -> 이벤트 반환. ** 단방향 데이터 흐름이 적합

이벤트, 상태

이벤트

  • UI의 일부에서 이벤트를 발행해 위로 전달
  • 뷰 모델에서 처리하는 버튼 클릭, 사용자 세션의 만료를 표현하는 앱의 다른 레이어에서 전달되는 이벤트

상태 갱신

  • 이벤트 핸들러가 상태를 바꿈

상태 표시

  • 스테이트 홀더가 아래로 전달한 상태를 UI가 표시함

단방향 데이터 흐름의 장점

  • 테스트 가능성: 상태를 표시하는 UI와 상태를 분리하면, 둘을 분리해 쉽게 테스트할 수 있음
  • 상태 캡슐화: 상태가 한곳에서만 갱신될 수 있으면, 일관되지 않는 상태 때문에 발생하는 버그를 줄일 수 있음(SSOT)
  • UI 일관성: StateFlow와 LiveData와 같은 관측가능한 상태 홀더를 사용해 UI에 상태 갱신을 즉각 반영할 수 있다.

Compose의 단방향 데이터 흐름

  • 컴포저블은 상태와 이벤트에 따라 동작
  • 컴포즈는 값 홀더로 State 객체를 정의, 상태 값의 변경을 리컴포지션을 유발함
  • remember, rememberSaveable로 상태를 저장한다
  • mutableStateOf는 Compose가 관측할 수 있는 타입은 MutableState를 만듬 -> 값이 변경되면 값을 읽는 모든 컴포지션 함수의 리컴포지션을 준비함
  • remember는 객체를 컴포지션에 저장하고, remember를 호출한 컴포저블이 컴포지션에서 제거될 떄 객체를 잊어버림
  • rememberSavable은 객체를 Bundle에 저장해 configuration이 변경되어도 유지함
profile
느긋하게 살자!

0개의 댓글