繁体   English   中英

使用@Model Jetpack Compose 管理状态不起作用

[英]Managing State with @Model Jetpack Compose doesn't work

我有一个具有@Model 状态的撰写按钮。

@Model
class CounterState(var count: Int = 0)

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        MyApp {
            Counter(CounterState())
        }
    }
  }
}

@Composable
fun Counter(state: CounterState) {
Button(
    text = "I've been clicked ${state.count} times",
    onClick = {
        state.count++
    },
    style = ContainedButtonStyle(color = if (state.count > 5) Color.Green else Color.White)
  )
}

当我单击按钮时,它的文本没有更新。

有谁知道为什么?

在这条线上

Counter(CounterState())

您每次都在创建一个新的CounterState每次重组时都会将其重置为零。 您应该在组合之外创建一次它,然后将其存储在一个变量中,以便每次都传递给Counter

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM