[Jetpack Compose] StateFlow 값 변경시 주의 점

오준석·2021년 7월 20일
0

코딩삽질방지

목록 보기
11/52

StateFlow의 값을 변경했을 때 컴포즈에 통지가 되는데 List의 경우 갯수가 동일하고 특정 요소의 프로퍼티만 변경하는 경우 안 되는 예

val items: StateFlow<List<Todo>> = _items

fun toggle(index: Int) {
    _items.value = _items.value.map {
        if (it.uid == index) {
            it.isDone = !it.isDone
            it
        } else it
    }
}

되는 예. 객체를 갈아끼우면 됨

val items: StateFlow<List<Todo>> = _items

fun toggle(index: Int) {
    _items.value = _items.value.map {
        if (it.uid == index) {
            it.copy(isDone = !it.isDone)
        } else it
    }
}
profile
교육하고 책 쓰는 개발자

0개의 댓글