在this article中,它表示如果可组合对象的参数类型是ImmutableList
,则它被认为是稳定的,这意味着如果列表没有改变,则可组合对象不会被重新组合。
@Immutable
data class Contact(val name: String, val age: Int)
@Composable
fun ContactRow(contacts: ImmutableList<Contact>, modifier: Modifier = Modifier) {
var selected by remember { mutableStateOf(false) }
Row(modifier) {
ContactDetails(contacts)
Checkbox(selected, onCheckedChange = {
selected = !selected
})
}
}
@Composable
fun ContactDetails(contacts: ImmutableList<Contact>) {
Text(text = contacts[0].name)
}
在这里,每次我选中复选框时,ContactDetails
可组合对象都会被重新组合,即使我使用的是KotlinX集合中的ImmutableList
。
我的撰写版本也是1.2.0
1条答案
按热度按时间bvn4nwqk1#
您这边肯定有个小错误。此处提供的代码是有效的,ContactDetails将被跳过,而不是重新组合。编译器将ContactRow和ContactDetails都标记为稳定且可跳过。