LaunchedEffect 를 이용하여 상태값 변하는 거 체크하기

갓김치·2025년 1월 9일
1

Android

목록 보기
5/5

상황

// Screen
val accountInfo by viewModel.accountInfo.collectAsState() // viewModel 에서 suspend fun 으로 fetch 함

...
val selectedGender = remember { mutableStateOf(accountInfo?.gender ?: "") }

GenderSegmentRow(selectedGender = selectedGender)

accountInfo 가 async 로 fetch 되는 거여서, selectedGender 가 set될때는 empty string 으로 될 수 있어, 선택된 성별이 안보임.

해결1

val accountInfo by viewModel.accountInfo.collectAsState() // viewModel 에서 suspend fun 으로 fetch 함

val selectedGender = remember { mutableStateOf(accountInfo?.gender ?: "") }

LaunchedEffect(accountInfo) {
	accountInfo?.gender?.let {
    	selectedGender.value = it
	}
}

LaunchedEffect 를 이용해 accountInfo 가 업데이트 될 때마다 selectedGender 를 업데이트 하도록함.

해결 2

viewModel.setSelectedGender(accountInfo?.gender ?: "")

val selectedGender by viewModel.selectedGender.collectAsState()

recomposition 이 잦으면 selectedGender 를 viewModel로 옮길 수 있다

profile
갈 길이 멀다

1개의 댓글

comment-user-thumbnail
2025년 1월 9일

공유 감사합니다!

답글 달기