[Android] Compose Recomposition

incava·2023년 10월 7일
0

Composition이란?

앱의 UI를 설명하는 것을 말하는데 일종의 트리구조.
@Composable을 통해 만들어지는 것이 composition이라고 명명.
이것을 초기 컴포지션이라 한다.

Recomposition이란?

상태가 바뀌었을 때 예약되고 변경되는 것을 말함.
State가 변경 되면 리컴포지션이 트리거가 되며,
State를 읽는 컴포지션과 다른 컴포지션도 대상이 됨.
"Stable"을 통해 스킵 할 수도 있음.
모든 입력이 안정적이고 변경되지 않았으면 건너뛸 수 있음.

Stable 대상 조건

  1. Diff 인스턴스 결과가 같은 경우,

  2. 공개 프로퍼티가 변경 될 시, Composition에 알리도록 함.

  3. 모든 공개 프로퍼티는 안정적이여야 함.

    단, 프리미티브 타입, 문자열, 람다 & 함수는 안정적이라고 판단.
    만약, 안정적이지 않을 경우, @Stable을 표기.

    ReComposition의 특징

  4. 3개의 다른 인스턴스가 있을 때, 4번째 순서로 다른 인스턴스가 추가 되는 경우, 리컴포지션은 마지막인 하나만 이루어짐.
    -> 리컴포지션이 잘 된 케이스

  5. 3개의 다른 인스턴스가 있을 때, 첫번째에 다른 인스턴스가 추가 되는 경우, 순서가 모두 달라지기 때문에 3개의 인스턴스토 모두 리컴포지션이 이루어짐. DIFF가 UniqueID를 인식못하기 때문에 순서로만 판단 되는 문제로 보여짐.

    즉, 각 아이템 별로 UniqueID를 정해주면 문제를 막을 수 있음.

profile
근거있는 코딩하고 싶은 개발자

0개의 댓글

관련 채용 정보