【问题标题】:update policy for a data class in Android Jetpack ComposeAndroid Jetpack Compose 中数据类的更新策略
【发布时间】: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


    【解决方案1】:

    我会试试这个:

    data class CounterState(var counter: Int by remember { mutableStateOf(0)})
    

    希望它有效, 安娜

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多