【发布时间】:2020-11-05 14:22:58
【问题描述】:
我尝试使用数据类中的一个对象,该对象将更新 Composable 并将其声明如下:
data class CounterState(var counter: Int = 0)
.....
val counterState: CounterState by remember { mutableStateOf(CounterState(), structuralEqualityPolicy()) }
structuralEqualityPolicy() 是 Composable 的更新策略,定义如下:
将 MutableState 的值视为等价的策略,如果它们是 结构上 (==) 相等。
如果属性计数器更改为:counterState.counter++,则应更新 Composable,但这不起作用。
我使用 Compose 版本1.0.0-alpha06
知道如何解决这个问题吗?
import androidx.compose.foundation.Text
import androidx.compose.foundation.layout.Column
import androidx.compose.material.Button
import androidx.compose.runtime.*
import androidx.ui.tooling.preview.Preview
data class CounterState(var counter: Int = 0)
@Composable
fun dataClassRemember() {
val counterState: CounterState by remember { mutableStateOf(CounterState(), structuralEqualityPolicy()) }
Column() {
Button(onClick = {
counterState.counter++
}) {
Text(text = "Increment")
}
Text(text = "Counter value is ${counterState.counter}")
}
}
@Preview("dataClassRemember")
@Composable
fun dataClassRememberPreview() {
dataClassRemember()
}
【问题讨论】:
标签: android android-jetpack android-jetpack-compose