2024.04.21 - [Android/Android Compose] - 컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 1
이전 글에 이어서 알아보자.
이번에는
- DisposableEffect
- SideEffect
이렇게 알아볼 예정이다.
DisposableEffect
는 앞글에서 봤던 LaunchedEffect 와 비슷하지만 취소됐을때 onDispose 가 호출된다.
취소될때의 동작을 추가할 수 있는것이다.
아래 코드처럼 작성할 수 있다.
DisposableEffect(menuState) {
when (menuState) {
BottomDialogMenu.LinkAdd -> {
mainViewModel.updateScreenState(MainScreenState.LINKADD.state)
}
BottomDialogMenu.GroupAdd -> {
mainViewModel.updateScreenState(MainScreenState.GROUPADD.state)
}
else -> {
}
}
onDispose {
mainViewModel.updateMenuState(BottomDialogMenu.None)
}
}
SideEffect
Compose에서 관리하는 객체가 아닌 객체에 compose의 상태를 공유하기 위한 용도로 사용되며
Composition이 완료되면 진행할 동작을 예약할 때 사용한다.
이 함수는 recomposition이 일어날 때마다 호출된다.
따라서 효율적인 사용을 위해 특정 시점에 사용할 때는 LaunchedEffect를, 자원 해제가 필요한 경우에는 DisposableEffect를 사용하는 것이 좋다.
val callback = remember { ... }
SideEffect {
callback.isEnable = isEnable
}
이렇게 쓸 수 있다.
반응형
'Android > Android Compose' 카테고리의 다른 글
Compose + AGSL 셰이더를 이용해서 간지나는 카드 애니메이션 만들기 (0) | 2024.10.31 |
---|---|
안드로이드 compose 비트맵으로 캡쳐하기 (3) | 2024.09.02 |
Android Compose 의 @Immutable 와 @Stable (0) | 2024.08.20 |
컴포즈의 Side-Effect 형제들에 대해서 알아보자 - 1 (0) | 2024.04.21 |
Jetpack Compose CompositionLocal 에 대해 알아봅시다 (0) | 2024.03.31 |
스와이프 삭제 구현 (0) | 2024.03.10 |
[안드로이드 컴포즈] 스와이프 삭제 구현 (1) | 2024.01.14 |
안드로이드 컴포즈 dialog 커스텀 하기 (0) | 2023.12.20 |